类型.实例上的invokember

本文关键字:invokember 实例 类型 | 更新日期: 2023-09-27 18:10:59

如何在实例上调用InvokeMember ?

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

MyObject myInstance = MyObject.GetObject();
// ?

我试过了:

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

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

帮忙吗?

类型.实例上的invokember

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

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

详情请参阅文档

如何:

MethodInfo method = typeof(MyObject).GetMethod("MyMethod", BindingFlags.Public | BindingFlags.Instance);
method.Invoke(myInstance, new object[] { "argument string" });