Может ли C# 4.0 variance помочь мне вызвать конструктор базового класса с восходящим преобразованием?

Я немного читал об универсальной дисперсии и еще не совсем понял ее, но хотел бы знать, делает ли она что-то вроде возможно следующее?

class A<T> { }

class B { }

class C : B { }

class My1  {
    public My1(A<B> lessDerivedTemplateParameter)
    {
    }
}

class My2 : My1 {
    public My2(A<C> moreDerivedTemplateParameter)
        : base(moreDerivedTemplateParameter) // <-- compile error here, cannot convert
    {
    }
}
6
задан Aaron Anodide 25 May 2012 в 19:12
поделиться