MethodInfo.Invoke() 中的 Object 参数有什么用?

What is the Object paramter in MethodInfo.Invoke() for?

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

MSDN documentation 说:

The object on which to invoke the method or constructor

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

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

如果方法是 staticdo 只需调用方法,在这种情况下,你将 null 传递给 [=14] 的参数=].

对于实例方法,您可以在对象的实例上调用方法,而不仅仅是在 "nothing" 上。您通常调用该方法的对象实例就是您传递给 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