如何在实例上调用InvokeMember?
例如,如果我想使用实例的参数MyMethod()
调用方法"argument string"
:
MyObject myInstance = MyObject.GetObject();
// ?
我试过这个:
myInstance.GetType().InvokeMember("MyMethod",
BindingFlags.InvokeMethod | BindingFlags.Public,
null,
null,
new Object[] { "argument string" })
但它不起作用,抱怨MyObject没有MyMethod,实际上它是一个实例方法,而不是类方法,所以我认为它试图将它作为静态方法调用。
任何帮助?
答案 0 :(得分:6)
您的第二个null
应该是调用的目标:
myInstance.GetType().InvokeMember("MyMethod",
BindingFlags.InvokeMethod | BindingFlags.Public,
null,
myInstance,
new Object[] { "argument string" })
有关详细信息,请参阅the documentation。
答案 1 :(得分:2)
怎么样:
MethodInfo method = typeof(MyObject).GetMethod("MyMethod", BindingFlags.Public | BindingFlags.Instance);
method.Invoke(myInstance, new object[] { "argument string" });