Casting Generics
本文关键字:Generics Casting | 更新日期: 2023-09-27 17:59:53
我可以铸造吗
IInterface<MyClass>
至
IInterface<IAnother>
MyClass何时实现IAnother?
是的,但仅当您使用C#4(或更高版本)和时,IInterface
声明为IInterface<out T>
。
这被称为通用协方差,你可以在MSDN上找到更多信息,或者Bart de Smet的介绍(更正式但更容易理解)。
如果您正确地装饰了您的使用场景(即:IInterface<out IAnother>
),这在C#4中通过协方差是可能的。
请注意,根据您的界面使用情况,这样做可能会产生副作用。我建议阅读《通用接口中的差异》以了解更多细节,但主要问题是,由于放弃了一些类型安全性,您可能会陷入运行时错误的境地。
查看C#4.0 中的协方差和反方差