好久没有写文章了,终于找到工作,抽空写一下冒个泡。
问题
最近遇到一个这样 ORM 的问题,一个返回类型为 List 泛型方法中,需要做到根据条件访问数据库,并且把得到的结果存入 List 中返回。
由于只是以前学过一段时间的 C#,而且反射一直个人认为是各中难点,加上泛型,这篇文章纯属个人纪录,如有错误,望各位大佬指正。
分析
根据条件访问数据库 ==> 遍历获取到的 reader 对象 ==> 创建泛型实例以及泛型 List,并且对实例赋值存入 List ==> 遍历完成,返回当前的 List
从上面的几个步骤中我们可以发现,难点就是在于这个泛型实例的创建以及它的属性赋值。我们可以通过 Activator 的CreateInstance(type) 方法创建,然后通过 type.setValue(object,value,index) 来设置对应的属性值,至于如何匹配这些属性值,我们就通过 ORM 中来映射获取到对应的特性值与数据库字段的匹配。这样问题就解决了。
解决方法
这里分为几个步骤,
- 获取到数据库的返回(ps