铸造仿制药

时间:2011-06-22 15:43:29

标签: c# generics

我可以施展

IInterface<MyClass>

IInterface<IAnother>

当MyClass实现IAnother?

3 个答案:

答案 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中的协方差和逆变

相关问题