簡體   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