Estaba leyendo un poco sobre varianza genérica y todavía no lo entiendo completamente, pero me gustaría saber si hace algo como lo siguiente posible.¿Puede la varianza de C# 4.0 ayudarme a llamar a un constructor de clase base con un upcast?
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
{
}
}
No soy tan fluido en el varian genérico como me gustaría, por lo tanto, este es un comentario, no una respuesta, pero creo que debe definir 'A' como 'A ' para hacer esta compilación. –
psubsee2003
@ psubsee2003: Creo que solo está permitido para interfaces. – Douglas
interesante, hice su sugerencia y además tuve que hacer A e interfaz, luego compila ... Continuaré y veré si puedo obtener el mismo resultado que estaba buscando, gracias ... –