我从 Java 转到 C#,但我无法找到解决以下问题的方法:
我有一个通用基类:
class MyBase<T> where T : SomeAncestorOfTs
{ ... }
然后是一些专门的类( A
、 B
、 C
...)从它派生出来,比如:
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/