如何通过反射动态调用泛型方法
在调用泛型方法,如果泛型本身也不明确,需要通过反射动态得知的情况下,需要使用如下方法来动态调用泛型了
使用示例
//泛型方法 public class LocalizationManager { public static List<ComboDataVm> TranslateEnumData<TEnum>(string name = "") where TEnum : struct, IComparable, IFormattable, IConvertible { return null; } } //--------------------------泛型方法的动态调用示例------------------- string myName="test";//泛型方法的参数 string typeName="TYPE.Serivces.Dto.MyDto";//泛型的类型FullName, Type tType=Type.GetType(typeName);//泛型类型,实际应用中,泛型的类型或FullName可通过反射动态获取 Type locType = typeof(LocalizationManager);//获取方法所在的class的类型 MethodInfo mi = locType.GetMethod("TranslateEnumData");//获取方法 MethodInfo dmi=mi.MakeGenericMethod(tType);//获取泛型方法 var comboDatas =(List<ComboDataVm>) dmi.Invoke(locType, new object[] { myName });//调用泛型方法并且传递参数name,执行方法返回的结果为object,要强制转换