关于C#中反射调用泛型方法的说明

在C#中通过反射的方式调用定义为泛型的方法时,我们需要先根据方法名称获取方法描写对象“MethodInfo”,然后通过
该对象的“MakeGenericMethod”方法构造出对应实际泛型类型的泛型方法,从而才能被我们使用:

// 定义的泛型方法结构
public void Test<T>();

// 获取当前类型
Type type = this.GetType();
// 获取Test的方法对象
MethodInfo methodInfo = type.GetMethod("Test");
// 定义泛型类型
Type genericType = typeof(int);
// 获取对应泛型类型的泛型方法
methodInfo = methodInfo.MakeGenericMethod(genericType);
// 反射调用泛型方法
methodInfo.Invoke(this, null);

发表评论