例子一:泛型类不含构造函数
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)}"); } } }
测试结果如下:
标签:反射,调用,specificGenericType,object,typeof,泛型,Type From: https://www.cnblogs.com/keeplearningandsharing/p/18500030