繁体   English   中英

铸造仿制药

[英]Casting Generics

我可以演员吗?

IInterface<MyClass>

IInterface<IAnother>

当MyClass实现IAnother?

是的,但只有当您使用C#4(或更高版本)时, IInterface被声明为IInterface<out T>

这被称为通用协方差,你可以在MSDN上找到更多信息,或者从Bart de Smet这个(更正式但更容易理解)的介绍

如果您正确地装饰您的使用场景(即: IInterface<out IAnother> ),这可以通过CovarianceC#4中实现

请注意,执行此操作可能会产生副作用,具体取决于您的界面使用情况。 我建议阅读Generic Interfaces中的Variance以获取更多详细信息,但主要问题是,您可能会遇到运行时错误,因为您放弃了某些类型的安全性。

看看C#4.0中的协方差和逆变

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM