Object obj
のパラメータの目的は何MethodInfo.Invoke()
ですか?
MSDN のドキュメントには次のように書かれています。
メソッドまたはコンストラクターを呼び出すオブジェクト
オブジェクトの「上」でメソッドを呼び出す方法がわかりません。Main()
またはクラスからメソッドを呼び出しただけだと思いました。それだけです。
また、このパラメータに任意のタイプの任意のオブジェクトを使用できますか?
Object obj
のパラメータの目的は何MethodInfo.Invoke()
ですか?
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