调用一个泛型方法,该方法返回泛型集合而不知道类型是什么? C#
我只是在C#中编写一个ORM类型的项目。调用一个泛型方法,该方法返回泛型集合而不知道类型是什么? C#
基本上,我有一个类的结构是这样的:
IDBOperation --- DBReadOperation
DBOperationPool
基本上,从指定的数据库表中的DBReadOperation地图数据,一类我的解决办法,比如说PersonDetails。
执行此操作的代码是从外部源获取的(不能完全记住?),并且基本返回一个通用集合(Collection)。
我的DBOperationPool需要能够接受任意数量的DBReadOperation并为每个DBReadOperation返回结果。我有这个逻辑..但似乎无法让代码工作?
映射类也建立在仿制药..所以我如何可以实例映射类沿线的是..
MappingClass<?> mappingInstance = new MappingClass<?>();
Collection<?> returnedCollection = mappingInstance.MapData(argument);
我如何(使用泛型,或反思,或任何东西)找出问题出在哪里的地方?可以做到吗?我有一个搜索周围,没有什么似乎与这个确切的问题有关..
显然,容易的路线是使池包括我想映射的类型..但池的全部是我可以抛出DBReadOperation,比如PersonDetails,CompanyDetails等,并将数据映射到需要的地方,并为每种类型正确地返回结果。有了这条路,我可以抛出任何数值DBReadOperations的成池,只要他们处理特定类型的每个DBOperationPool例如..但是那不是我想要的..
在所有这是否有道理?
问候,
西蒙
让MappingClass实现一些接口,IMappingClass,则指的是无处不在,你不知道什么类型的通用将持有。
public interface IMappingClass {
public void DoStuff();
}
public class MappingClass<T> : IMappingClass {
// stuff
}
// ... elsewhere ...
public void DoMappingStuff(IMappingClass map){
map.DoStuff();
// do other stuff...
}
// ...
MappingClass<string> myStringMap = new MappingClass<string>();
DoMappingStuff(myStringMap);
MappingClass<int> myIntMap = new MappingClass<int>();
DoMappingStuff(myIntMap);
这两个选项都没有真正处理我的问题 - >这是我的错,我解释得很糟糕.. – Simon 2010-12-08 04:25:33
您的DBReadOperation类可以通用吗?这意味着,DBReadOperation<T>
然后你实例化它:
var dbReadOperation = new DBReadOperation<PersonDetails>();
的MappingClass将采取在DBReadOperation并返回T.它可以用来像:
var mapper = new MappingClass<DBReadOperation<PersonDetails>>();
Collection<PersonDetails> collection = mapper.MapData(someArgument);
也许使用对象作为泛型类型参数和然后根据你的需要去做任何事情? (它有点杀死泛型的概念,但它应该工作) – Machinarius 2010-12-08 02:51:44