如何通過反射動態調用泛型方法
在調用泛型方法,如果泛型本身也不明確,需要通過反射動態得知的情況下,需要使用如下方法來動態調用泛型了
使用示例
//泛型方法 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,要強制轉換