例子一:泛型类不含构造函数
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)}");}} }
测试结果如下: