惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
小众软件
小众软件
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
J
Java Code Geeks
WordPress大学
WordPress大学
The Cloudflare Blog

博客园 - 风清云淡

Extjs使用 RestfulWebApi +Token验证小结 Oracle 10g的备份与还原 Oracle与Sql Server写SQL的区别 Oracle 表与字段的注释操作 将MS SQL SERVER 数据库导入到ORACLE的坑 SQL SERVER 触发器的误区 Asp.net Core部署于CentOS上报404错误的坑 SqlBulkCopy 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 bit SQL SERVER OVER开窗函数,Partition By,ROW_NUMBER(),DENSE_RANK(),RANK()排名函数 CefSharp"Could not load file or assembly 'CefSharp.Core.dll' or one of its dependencies" 在同一个项中引用同一类库的多个版本 Visual Studio中Js使用智能感知 Func<T>,Action<T>,Predicate<T>使用小结 Nuget 在VS中操作命令 Unity的动态加载简单使用 枚举的使用总结 IIS WEB程序如何访问共享目录 AngularJS之页面跳转Route ASP.NET MVC4 BundleConfig的注意事项
如何通过反射动态调用泛型方法
风清云淡 · 2018-05-25 · via 博客园 - 风清云淡

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

在调用泛型方法,如果泛型本身也不明确,需要通过反射动态得知的情况下,需要使用如下方法来动态调用泛型了

使用示例

//泛型方法
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,要强制转换