C# ORM中反射与泛型的交叉应用 - 动态创建泛型实例并为其赋值

好久没有写文章了,终于找到工作,抽空写一下冒个泡。

问题

最近遇到一个这样 ORM 的问题,一个返回类型为 List 泛型方法中,需要做到根据条件访问数据库,并且把得到的结果存入 List 中返回。

由于只是以前学过一段时间的 C#,而且反射一直个人认为是各中难点,加上泛型,这篇文章纯属个人纪录,如有错误,望各位大佬指正。

分析

根据条件访问数据库 ==> 遍历获取到的 reader 对象 ==> 创建泛型实例以及泛型 List,并且对实例赋值存入 List ==> 遍历完成,返回当前的 List

从上面的几个步骤中我们可以发现,难点就是在于这个泛型实例的创建以及它的属性赋值。我们可以通过 Activator 的CreateInstance(type) 方法创建,然后通过 type.setValue(object,value,index) 来设置对应的属性值,至于如何匹配这些属性值,我们就通过 ORM 中来映射获取到对应的特性值与数据库字段的匹配。这样问题就解决了。

解决方法

这里分为几个步骤,

  1. 获取到数据库的返回(ps
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值