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

如何通过反射动态调用泛型方法
在调用泛型方法,如果泛型本身也不明确,需要通过反射动态得知的情况下,需要使用如下方法来动态调用泛型了
使用示例
//泛型方法
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,要强制转换

 

转载于:https://www.cnblogs.com/berlin/p/9086818.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值