2
我在我的類中有一個泛型類型參數。爲什麼我可以這樣做:通用左側接口參數
BaseFoo<InterfaceImplementation> foo = new ChildFoo<InterfaceImplementation>();
但不是這樣?編譯器不應該能夠找出AnInterface
是InterfaceImplementation
的執行嗎?
BaseFoo<AnInterface> foo = new ChildFoo<InterfaceImplementation>();
我希望能夠做這樣的事情:
BaseFoo<AnInterface> foo = new ChildFoo<InterfaceImplementation>();
BaseFoo<AnInterface> bar = new ChildFoo<AnotherInterfaceImplementation>();
如果雙方實現都有一個共同的接口。
將'BaseFoo'轉換爲接口並使用[Co-和Contravariance](https://msdn.microsoft.com/zh-cn/library/ee207183.aspx)。 –
'桔子是一種水果,但你不能把一籃桔子當成一籃水果,因爲你可以把一根香蕉加入籃子',但不知何故,我總是得到這個比喻錯誤。 – Maarten