如何在c#中使用反射调用具有不同类型参数的方法

本文关键字:类型参数 方法 调用 反射 | 更新日期: 2023-09-27 18:10:58

我试图调用一个函数,使用。net反射在c#中接受两个参数(一个布尔值和一个字符串)。然而,使用下面的代码,我得到一个异常:

object[] paramList = new object[] { true, "Foo" };
Type wsType = typeof(MyWS);
MyWS inst = (MyWS)Activator.CreateInstance(wsType);
MethodInfo method = wsType.GetMethod(function);    // function = the name of the function to be called
method.Invoke(inst, paramList);

这会抛出ArrayTypeMismatchException("试图访问与数组不兼容的类型的元素")。

似乎是paramList导致异常,但我不知道为什么?

我要调用的函数是这样的:

public bool EnableSchedule(bool enable, string password)
{
    ...
}

如何在c#中使用反射调用具有不同类型参数的方法

你所做的似乎没有什么问题——除非问题出在"MyWS"上。我假设这门课是公开的。同时,尝试在GetMethod()中添加一些绑定标志,如

wsType.GetMethod(function, BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance);
相关文章: