例子一:泛型類不含建構函式
using System; using System.Reflection; namespace 使用反射呼叫泛型類的方法 { class Program { static void Main(string[] args) { //定義要使用的型別引數(就是呼叫方法時要傳入的引數型別,例如int) Type genericTypeArgument = typeof(int); //獲取泛型類的定義 Type generciClassType = typeof(GenericClass<>); //建立具體的泛型型別 Type specificGenericType = generciClassType.MakeGenericType(genericTypeArgument); //使用反射建立泛型類的例項 object instance = Activator.CreateInstance(specificGenericType); //獲取方法資訊 MethodInfo methodInfo = specificGenericType.GetMethod("DoSomething"); //準備方法引數 object[] parameters = new object[] { 42 }; //呼叫方法 methodInfo.Invoke(instance, parameters); Console.ReadKey(); } } public class GenericClass<T> { public void DoSomething(T value) { Console.WriteLine($"Do something with {value} of type {typeof(T)}"); } } }
測試結果如下: