【发布时间】:2010-12-08 02:13:54
【问题描述】:
我只是在玩用 C# 编写一个 ORM 类型的项目。
基本上,我有一个这样的类结构:
IDBO操作 --- DBReadOperation
DBOperationPool
基本上,DBReadOperation 将数据从指定的数据库表映射到我的解决方案中的一个类,例如 PersonDetails。
执行此操作的代码取自外部源(不太记得?),并且基本上返回一个通用集合(Collection)。
我的 DBOperationPool 需要能够获取任意数量的 DBReadOperation 并为每个返回结果。我的逻辑已经失败..但似乎无法让代码工作?
映射类也是基于泛型构建的。所以我怎样才能将映射类实例化为...
MappingClass<?> mappingInstance = new MappingClass<?>();
Collection<?> returnedCollection = mappingInstance.MapData(argument);
我如何(使用泛型、反射或任何东西)找出在上面问号的位置放置什么?可以做到吗?我进行了搜索,似乎与这个确切的问题没有任何关系..
显然,简单的方法是让池包含我想要映射的类型。但池的全部意义在于我可以将 DBReadOperation 扔给它,比如 PersonDetails、CompanyDetails 等,并拥有数据映射到它需要的位置,并为每种类型正确返回结果。通过这条路线,我可以将任意数量的 DBReadOperations 放入一个池中,只要它们处理每个 DBOperationPool 实例的特定类型..但这不是我想要的..
这有意义吗?
问候,
西蒙
【问题讨论】:
-
也许使用 object 作为泛型类型参数,然后 casxting 到你需要的任何东西? (这有点扼杀泛型的概念,但它应该可以工作)
标签: c# sql generics reflection orm