(Me comprobarlo por mí mismo, pero no tengo VS2010 (aún))es C# 4.0 covariante Tupla
Decir que tengo 2 interfaces base:
IBaseModelInterface
IBaseViewInterface
Y 2 interfaces realizando aquellos:
ISubModelInterface : IBaseModelInterface
ISubViewInterface : IBaseViewInterface
Si defino un Tuple<IBaseModelInterface, IBaseViewInterface>
me gustaría establecer que, basándose en el resultado de una fábrica que devuelve Tuple<ISubModelInterface, ISubViewInterface>
.
En C# 3 no puedo hacer esto a pesar de que las interfaces secundarias se dan cuenta de las interfaces base. Y estoy bastante seguro de que C# 4 me permite hacer esto si estaba usando IEnumerable<IBaseModelInterface>
porque ahora está definido con la palabra clave in
para permitir la covarianza. Entonces, ¿me permite Tuple
hacer esto?
Por lo que (poco) entiendo, la covarianza solo se permite en las interfaces, ¿eso significa que debe haber una interfaz ITuple<T1, T2>
? ¿Existe esto?
Tenga en cuenta que la palabra clave "in" permite * contravariancia *, no * covarianza *. IEnumerable está marcado como * out * porque * a T proviene de un IEnumerable *. –