3
這基本上是一個設計問題。如何處理協方差限制?
我的類結構如下:
Interface IA
interface IB<T> where T : IA
abstract class AC<T> : IB<T>
class D : IA
class E : IA
class F : AC<D>
class G : AC<E>
現在,我已經在AC其簽名的方法:
void foo(IB<IA> param)
我想是F稱呼它:
foo(new G())
我知道協變和逆變的限制,我知道這種語言不允許它。另外,我不能設置IB<out T>
。
我的問題是,在設計方面處理這種情況的正確方法是什麼?
你能具體說明爲什麼你不能設置'IB'? –
(我懷疑這是一個重複的問題,順便說一句 - 但很難弄清楚我將如何搜索它......) –
@MatthewWatson根據協方差的侷限性,當使用T時,我不能設置在哪裏限制,或用作方法的參數。 https://msdn.microsoft.com/en-us/library/dd997386(v=vs.100).aspx –
Elliko