c# - 在从泛型派生的类集合中使用泛型基类

标签 c# generics dictionary abstract-class

我从 Java 转到 C#,但我无法找到解决以下问题的方法:

我有一个通用基类:

class MyBase<T>  where T : SomeAncestorOfTs
{ ... }

然后是一些专门的类( ABC ...)从它派生出来,比如:

class A : MyBase<SomeSpecificT> 
{ ... }

现在我想在我的代码中的某处创建一个 Dictionary MyBase 的各种后代: 类似于 Dictionary<string,MyBase<>> ,但这不起作用。

除了 Dictionary<String,Object> 之外,在 C# 中还有其他方法吗? ?

在 Java 中,这很容易通过执行 HashMap<String,MyBase<? extends SomeAncestorOfTs>> 来实现。 .

更新:T应该有一个共同的基类(SomeAncestorOfT)。

最佳答案

不能直接那样做。我的建议是添加另一个非泛型基类:

class MyBase
{ ... }

class MyBase<T> : MyBase
{ ... }

然后制作该基数的字典:Dictionary<string,MyBase>

关于c# - 在从泛型派生的类集合中使用泛型基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28110997/

相关文章:

java - 为什么我必须强制转换这个泛型类型?

c# - 如何通过 C# 将 IStream 存储到文件?

c# - 方法调用和方法入口 (C#) 之间发生了什么?

c# - 15 拼图随机播放方法问题

java - 具有扩展多种类型的泛型参数的静态字段

Java 泛型 : capture generic type when copying instances of subclasses

ios - Swift 4 按第一个值排序字典

python - 创建一个字典列表,其中每个字典都包含另一个字典作为值

arrays - 如何将字典加载到 UIPickerView

c# - 如何检测 ActiveX 支持?