0

Object objのパラメータの目的は何MethodInfo.Invoke()ですか?

MSDN のドキュメントには次のように書かれています。

メソッドまたはコンストラクターを呼び出すオブジェクト

オブジェクトの「上」でメソッドを呼び出す方法がわかりません。Main()またはクラスからメソッドを呼び出しただけだと思いました。それだけです。

また、このパラメータに任意のタイプの任意のオブジェクトを使用できますか?

4

2 に答える 2

4

メソッドが である場合は、メソッドstatic呼び出すだけです。そのような場合は、nullその引数にを渡しますInvoke

インスタンスメソッドの場合、「何もない」だけでなく、オブジェクトのインスタンスでメソッドを呼び出します。通常はメソッドを呼び出すオブジェクト インスタンスを に渡しますInvoke

例として、次の場合:

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

次のようにして、リフレクションでそれをモデル化できます。

string s = "hi";
MethodInfo trimMethod = GetTrimMethodInfo();
object s2 = trimMethod.Invoke(s);
于 2015-01-30T18:11:49.330 に答える
2

メソッドを呼び出すために使用する必要があるオブジェクトのインスタンスです。次に例を示します。

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 
于 2015-01-30T18:16:38.420 に答える