MethodInfo.Invoke() 中的 Object paramter 有什么用



MethodInfo.Invoke()Object obj参数的目的是什么?

MSDN 文档说:

要调用方法或构造函数

的对象

我不明白你是如何"在"一个对象上调用方法的。我以为你只是从Main()或类中调用了一个方法,仅此而已。

而且,我是否可以对此参数使用任何类型的任何对象?

如果该方法static则只需调用该方法,在这些情况下,您将null传递给Invoke的参数。

对于实例方法,您可以在对象的实例上调用该方法,而不仅仅是在"无"上调用该方法。 您通常会在其上调用该方法的对象实例是您传递给 Invoke 的对象实例。

例如,如果您有:

string s = "hi";
var s2 = s.Trim();

您可以通过执行以下操作来在反射中对其进行建模:

string s = "hi";
MethodInfo trimMethod = GetTrimMethodInfo();
object s2 = trimMethod.Invoke(s);

它是应该用于调用方法的对象实例,例如:

private class MyClass
{
    private string _name;
    public MyClass(string name)
    {
        _name = name;
    }
    public void Foo()
    {
        Console.WriteLine(_name);
    }
}

如果我们像这样调用方法 foo:

Type magicType = typeof (MyClass);
MyClass c1 = new MyClass("1st class");
MyClass c2 = new MyClass("2nd class");
// Get the ItsMagic method and invoke with a parameter value of 100
MethodInfo magicMethod = magicType.GetMethod("Foo");
object magicValue = magicMethod.Invoke(c1, null);   // Output is 1st class

如果我们使用 c2 调用,我们会得到:

object magicValue = magicMethod.Invoke(c2, null);   // Output is 2nd class 

相关内容

  • 没有找到相关文章

最新更新