【发布时间】:2010-11-10 16:42:29
【问题描述】:
我有两个接口:
public interface A {
void aMethod();
}
public interface B : A {
void bMethod();
}
后来我基本上用的是这样的字典:
Dictionary<int, A> dict = new Dictionary<int, B>();
C# 说我不能从右向左转换,即使我施放它。有没有办法在 C# 中使用泛型以便它可以工作?如果我将它们设为抽象类似乎没问题,但我需要这些作为接口。
【问题讨论】:
-
您使用的是什么版本的 .NET?
-
@Dinah:为什么框架版本在这种情况下会有什么不同?
-
@LukeH:因为 .NET 4.0 具有协方差和反方差,可以解决这个问题。如果 dmurph 在 4.0 上仍存在此问题,则该问题与 4.0 之前发生的问题不同
-
@Dinah:C#4 引入了泛型接口和委托的变体,not 类,因此如果尝试将
Dictionary<int, B>分配给Dictionary<int, A>没有区别. -
看来我什至没有使用 4.0。这里的每个人看起来都是正确的......
标签: c# generics inheritance