【问题标题】:Type.InvokeMember on instance实例上的 Type.InvokeMember
【发布时间】:2014-11-03 18:08:35
【问题描述】:

如何在实例上调用 InvokeMember?

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

MyObject myInstance = MyObject.GetObject();

// ?

我试过了:

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

但是不行,抱怨MyObject没有MyMethod,而且确实是实例方法,不是类方法,所以我认为它是在尝试将其作为静态方法调用。

有什么帮助吗?

【问题讨论】:

    标签: c# reflection


    【解决方案1】:

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

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

    更多详情请见the documentation

    【讨论】:

    【解决方案2】:

    怎么样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多