gpt4 book ai didi

c# - 在不知道类型是什么的情况下调用返回泛型集合的泛型方法? C#

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:52 25 4
gpt4 key购买 nike

我只是想用 C# 编写一个 ORM 类型的项目。

基本上,我有这样一个类结构:

IDB操作--- DBReadOperation

DBOperationPool

基本上,DBReadOperation 将指定数据库表中的数据映射到我的解决方案中的一个类,例如 PersonDetails。

执行此操作的代码取自外部源(不太记得?),并且基本上返回一个通用集合 (Collection)。

我的 DBOperationPool 需要能够获取任意数量的 DBReadOperation 并为它们中的每一个返回结果。我的逻辑不对……但似乎无法让代码正常工作?

映射类也是建立在泛型之上的..所以我如何实例化映射类以符合..

MappingClass<?> mappingInstance = new MappingClass<?>();
Collection<?> returnedCollection = mappingInstance.MapData(argument);

我如何(使用泛型、反射或其他方式)找出在上面问号所在的位置放置什么?可以吗?我四处搜索了一下,似乎没有任何东西与这个确切的问题有关。

显然,简单的方法是让池包含我想要映射到的类型。但是池的全部要点是我可以将 DBReadOperation 扔给它,比如 PersonDetails、CompanyDetails 等,并让数据映射到它需要的位置,并为每种类型正确返回结果。通过这条路线,我可以将任意数量的 DBReadOperations 放入池中,只要它们处理每个 DBOperationPool 实例的特定类型..但这不是我想要的..

这有意义吗?

问候,

西蒙

最佳答案

让 MappingClass 实现一些接口(interface),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);

关于c# - 在不知道类型是什么的情况下调用返回泛型集合的泛型方法? C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com