在C#中,通過反射機制可以動態調用方法和傳遞參數。以下是通過反射機制調用方法和傳遞參數的方法:
獲取方法信息:首先需要使用Type
類的GetMethod
方法或GetMethods
方法來獲取要調用的方法的信息。可以通過方法名、參數類型等來獲取方法信息。
創建方法的實例:如果方法是非靜態方法,需要先創建方法所屬類的實例。
調用方法:通過MethodInfo
類的Invoke
方法來調用方法,并傳遞參數。Invoke
方法接受兩個參數,第一個參數是方法所屬對象的實例(如果方法是靜態方法則傳入null
),第二個參數是一個object[]
類型的數組,用于傳遞方法的參數。
示例代碼如下:
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod(string param1, int param2)
{
Console.WriteLine($"Param1: {param1}, Param2: {param2}");
}
}
class Program
{
static void Main()
{
Type type = typeof(MyClass);
MyClass instance = new MyClass();
MethodInfo method = type.GetMethod("MyMethod");
object[] parameters = new object[] { "Hello", 123 };
method.Invoke(instance, parameters);
}
}
在上面的示例中,首先獲取了MyClass
類中的MyMethod
方法的信息,然后創建了MyClass
類的實例,并傳入方法調用的參數,最后調用該方法并輸出結果。