我可以施展
IInterface<MyClass>
到
IInterface<IAnother>
当MyClass实现IAnother?
答案 0 :(得分:4)
是的,但仅当您使用C#4(或更高版本)时,IInterface
被声明为IInterface<out T>
。
这称为通用协方差,您可以在Bart de Smet找到有关MSDN或更多信息(更正式但更易理解)introduction的更多信息。
答案 1 :(得分:1)
这可以在C# 4 via Covariance中进行,前提是您正确装饰您的使用场景(即:IInterface<out IAnother>
)。
请注意,执行此操作可能会产生副作用,具体取决于您的界面使用情况。我建议阅读Variance in Generic Interfaces以获取更多详细信息,但主要问题是,您可能会遇到运行时错误,因为您放弃了某种类型的安全性。
答案 2 :(得分:1)
了解C#4.0中的协方差和逆变