实例上的Type.InvokeMember

pis*_*hio 3 c# reflection

如何在实例上调用InvokeMember?

例如,如果我想MyMethod()"argument string"实例的参数调用该方法:

MyObject myInstance = MyObject.GetObject();

// ?
Run Code Online (Sandbox Code Playgroud)

我试过这个:

myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    null,
    new Object[] { "argument string" })
Run Code Online (Sandbox Code Playgroud)

但它不起作用,抱怨MyObject没有MyMethod,实际上它是一个实例方法,而不是一个类方法,所以我认为它试图将它作为静态方法调用.

有帮助吗?

Jon*_*eet 6

你的第二个null应该是调用的目标:

myInstance.GetType().InvokeMember("MyMethod",
    BindingFlags.InvokeMethod | BindingFlags.Public,
    null,
    myInstance,
    new Object[] { "argument string" })
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅文档.