我正在使用公共静态类和静态方法及其参数:
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);
}
但是它给了我错误
“对象引用未设置为对象的实例。”
我哪里出错了。
答案 0 :(得分:12)
使用以下方法解决了这个问题:
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 } );
答案 1 :(得分:5)
这里有很多问题
答案 2 :(得分:3)
您的方法是私有的,因为您没有明确声明访问修饰符。您有两种方法可以使代码按预期工作:
public
。BindingFlags.NonPublic
来电GetMethod
答案 3 :(得分:1)
制作方法public
。它应该在那之后工作
public static class WLR3Logon
{
public static void getLogon(int accountTypeID)
{}
}