• 如何通过反射动态调用泛型方法


    如何通过反射动态调用泛型方法
    在调用泛型方法,如果泛型本身也不明确,需要通过反射动态得知的情况下,需要使用如下方法来动态调用泛型了
    使用示例
    //泛型方法
    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,要强制转换
  • 相关阅读:
    洛谷1968美元汇率 dp
    洛谷luogu2782
    题解 AT2243 【正方形のチップ】
    [HAOI2006]聪明的猴子 题解
    D:苏卿念发红包
    c++小游戏——扫雷
    c++小游戏——拯救公主
    c++小游戏——三国杀
    C++小游戏——井字棋
    c++小游戏——杀手
  • 原文地址:https://www.cnblogs.com/berlin/p/9086818.html
Copyright © 2020-2023  润新知