Mar*_*lor 9 .net c# methods static instance
我一直在尝试按名称调用方法,但问题是我调用的方法不能是静态的,它需要是当前类.
我试过这样做的方式:
public static void InvokeMenuMethod(string methodName, object sender, EventArgs e)
Type calledType = Type.GetType("MyNamespace.MyClass");
calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static,
null,
null,
new object[] { sender, e }
);
}
Run Code Online (Sandbox Code Playgroud)
这显然只适用于静态成员,所以我尝试过这样的事情
public static void InvokeMenuMethod(string methodName, object sender, EventArgs e)
Type calledType = Type.GetType("this");
calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public,
null,
null,
new object[] { sender, e }
);
}
Run Code Online (Sandbox Code Playgroud)
但我得到Must specify binding flags describing the invoke operation required (BindingFlags.InvokeMethod CreateInstance GetField SetField GetProperty SetProperty).
Parameter name: bindingFlags错误......
那我怎么能这样做呢?
编辑:
所以:
public void InvokeMenuMethod(string methodName, object sender, EventArgs e) {
Type.GetType("this").InvokeMember(
methodName,
BindingFlags.InvokeMethod,
null,
this,
new object[] { sender, e }
);
}
Run Code Online (Sandbox Code Playgroud)
给了一个 NullReferenceException
解决方案:
没有"这个"Type.GetType("this")
Yah*_*hia 12
尝试
this.GetType().InvokeMember(
methodName,
BindingFlags.InvokeMethod,
null,
this,
new object[] { sender, e }
);
Run Code Online (Sandbox Code Playgroud)
来自MSDN
如果自己指定了InvokeMethod,则会自动包含BindingFlags.Public,BindingFlags.Instance和BindingFlags.Static
| 归档时间: |
|
| 查看次数: |
3439 次 |
| 最近记录: |