C#のリフレクションを使用してメソッドを呼び出す方法は何ですか。
C#のリフレクションを使用してメソッドを呼び出す手順は次のとおりです:
- System.Reflection名前空間をインポートしてください。
- Type.GetTypeメソッドを使用して、呼び出しメソッドのクラスのTypeオブジェクトを取得します。
- Type.GetMethodメソッドを使用して、呼び出すメソッドのMethodInfoオブジェクトを取得します。メソッドの名前やパラメーターの型などの情報を使用して取得できます。
- MethodInfo.Invokeメソッドを使用してメソッドを呼び出す。呼び出すインスタンスオブジェクト(インスタンスメソッドの場合)とメソッドの引数(引数がある場合)を渡す。
以下是一个示例代码,演示如何使用C#反射来调用一个方法:
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod(string message)
{
Console.WriteLine("MyMethod: " + message);
}
}
class Program
{
static void Main()
{
// 获取MyClass类的Type对象
Type type = typeof(MyClass);
// 获取MyMethod方法的MethodInfo对象
MethodInfo method = type.GetMethod("MyMethod");
// 创建MyClass的实例
MyClass myObject = new MyClass();
// 调用MyMethod方法
method.Invoke(myObject, new object[] { "Hello World!" });
}
}
上記のコードを実行すると、結果は次のとおりです:
MyMethod: Hello World!
注意:もし呼び出すメソッドが静的メソッドである場合は、インスタンスオブジェクトとしてnullを渡すことができます。もしメソッドがプライベートな場合は、BindingFlags.NonPublicフラグを使用してMethodInfoオブジェクトを取得できます。