Casting Generics

本文关键字:Generics Casting | 更新日期: 2023-09-27 17:59:53

我可以铸造吗

IInterface<MyClass>

IInterface<IAnother>

MyClass何时实现IAnother?

Casting Generics

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

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

如果您正确地装饰了您的使用场景(即:IInterface<out IAnother>),这在C#4中通过协方差是可能的。

请注意,根据您的界面使用情况,这样做可能会产生副作用。我建议阅读《通用接口中的差异》以了解更多细节,但主要问题是,由于放弃了一些类型安全性,您可能会陷入运行时错误的境地。

查看C#4.0 中的协方差和反方差