.net中怎么将反射得到的类型,当作泛型中的参数进行传递?
解决时间 2021-01-31 03:27
- 提问者网友:蓝莓格格巫
- 2021-01-30 16:41
// 反射获取表名的Type
Type type = Assembly.Load("Apt.MWSGR.Domain").GetType("Apt.MWSGR.Domain.Entities." + tableName);
var exportDataByTableNameQuery = new ExportDataByTableNameQuery();
就是上面第二行的大T怎么变为我想要的类型啊?
网上一些大牛说用Type.MakeGenericType方法,查了msdn不是很会用啊,哪位大神能否结合我上面的代码,给出一些事例啊,我要代码?
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-01-30 18:16
你看下 type.MakeGenericType 的定义。返回的还是TYPE
你只能type 传过去。具体怎么获取那个成员 。你可以在穿个委托过去。
全部回答
通过type类的type.makegenerictype方法获取
// 这个tablename是从报文里读取的,现在测试,我直接给个名字
string tablename = "baohuguihua";
// 反射获取表名的type
type type = assembly.load("apt.mwsgr.domain").gettype("apt.mwsgr.domain.entities." + tablename);
type = typeof(exportdatabytablenamequery<>).makegenerictype(type);
object exportdatabytablenamequery = activator.createinstance(type);
// 下面这句话是关键,太长了,分3行显示
var exportdata = type.getmethod("getall", system.reflection.bindingflags.public |
system.reflection.bindingflags.instance, null, new type[0], null)
.invoke(exportdatabytablenamequery, null);
我要举报
大家都在看
推荐资讯