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