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

时间:2011-10-12 12:38:02

标签: c# .net

我正在尝试使用C#中的.NET反射调用一个带有两个参数(布尔值和字符串)的函数。但是,使用以下代码我得到一个例外:

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)
{
    ...
}

1 个答案:

答案 0 :(得分:0)

似乎你所做的事情没有任何问题 - 除非问题在于“MyWS”。我认为这堂课是公开的。 同时,尝试向GetMethod()添加一些绑定标志,如

wsType.GetMethod(function, BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance);