我使用的是它的参数公共静态类和静态方法:
public static class WLR3Logon
{
static void getLogon(int accountTypeID)
{}
}
现在,我试图与它的参数的方法提取到另一个类,并使用下面的代码:
MethodInfo inf = typeof(WLR3Logon).GetMethod("getLogon",
BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy);
int[] parameters = { accountTypeId };
foreach (int parameter in parameters)
{
inf.Invoke("getLogon", parameters);
}
但它给我的错误
“你调用的对象是空的。”
我要去哪里错了。
这个问题得到了通过以下方法解决:
using System.Reflection;
string methodName = "getLogon";
Type type = typeof(WLR3Logon);
MethodInfo info = type.GetMethod(
methodName,
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);
object value = info.Invoke(null, new object[] { accountTypeId } );
你的方法是私有的,你没有明确声明的访问修饰符。 你有两个选择,使你的代码工作像预期一样:
- 你的方法更改为
public
。 - 指定
BindingFlags.NonPublic
在GetMethod
通话
让你的方法public
。 它应该在这之后的工作
public static class WLR3Logon
{
public static void getLogon(int accountTypeID)
{}
}