c#简易反射调用泛型方法

Posted 好人卡收藏家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#简易反射调用泛型方法相关的知识,希望对你有一定的参考价值。

// 所谓程序集的简单理解,存在不同项目中(不是解决方案),即using前需要引用**.dll


1、调用当前类文件下的方法public List<T> GetByCondition<T>(OperateLogModel model)
MethodInfo serviceMethod = this.GetType().GetMethod("GetByCondition");// 初始化方法信息,this表示当前对象,如调用其它对象可以代入。
object modelObj = Assembly.Load("5yue.Models").CreateInstance("_LBh.Models.OrderModel");// 跨程序集初始化一个空的model对象
Type modelType = Assembly.Load("5yue.Models").GetType("_LBh.Models.OrderModel");// 获取model类
// 也可:
Type modelType = modelObj.GetType() ;// 获取model类
// 调用
Model model = new Model();// 参数对象
Object[] para = new object[]{model};
var result = serviceMethod.MakeGenericMethod(modelType).Invoke(this, para);// 查询数据
// 其中,MakeGenericMethod为调用泛型泛型必须,modelType为传入T的类型参数,para为方法形参,可同时传入多个,并支持out,
// 获取out的参数时: model = para[0];

 

2、程序集内调用
object obj = assembly.CreateInstance("_LBh.Models.OrderModel");// 反射创建对象
Type type = Type.GetType("_LBh.Models.OrderModel");// 反射类型信息
// 也可:
Type type = obj.GetType();

 

以上是关于c#简易反射调用泛型方法的主要内容,如果未能解决你的问题,请参考以下文章

c#的泛型,委托,反射是啥?

C#关于反射创建泛型类

如何使用反射来调用泛型方法?

在.NET中使用反射调用泛型方法[重复]

泛型与反射

使用反射来调用泛型方法