man*_*u08 4 c# inheritance covariance
可能重复:
C#是否支持返回类型协方差?
为什么我不能这样实现接口?
考虑以下:
public interface IAnimal {
}
public class Animal : IAnimal {
}
public interface ICage {
IAnimal SomeAnimal {get;}
}
public class Cage : ICage{
public Animal SomeAnimal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多关于IEnumerable的协方差和逆变的东西,但我不知道如何让上面的代码工作.我收到错误"Cage没有实现接口成员IAnimal".既然它定义了动物,它比IAnimal更明确,似乎协方差应该照顾我.
我错过了什么?提前致谢.
目前在C#中无法实现.
从理论上讲,语言设计师可以添加它,但它们还没有.他们可能会也可能不会决定将其添加到潜在的未来版本的C#中.
最好的解决方法可能是:
public class Cage : ICage
{
public Animal SomeAnimal { get; set; }
IAnimal ICage.SomeAnimal
{
get { return SomeAnimal }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |