Supongamos que tengo interfaz y clase:Por qué covarianza no funciona con método genérico
public interface ITree {}
public class Tree : ITree {}
Como IEnumerable<T>
es covariante, la línea de código siguiente se compila con éxito:
IEnumerable<ITree> trees = new List<Tree>();
Pero cuando ponerlo en el método genérico:
public void Do<T>() where T : ITree
{
IEnumerable<ITree> trees = new List<T>();
}
I obtener el error compilado de compilador:
de error 1 No se puede convertir implícitamente el tipo 'System.Collections.Generic.List' a 'System.Collections.Generic.IEnumerable'. existe una conversión explícita (¿falta un yeso?) D: \ Lab \ Lab.General \ Lab.General \ Program.cs 83 40 Lab.General
Por qué covarianza no funciona en este caso?
posible duplicado de [? Es esto un error de covarianza en C# 4] (http://stackoverflow.com/questions/2783233/is-this-a-covariance -bug-in-c-sharp-4) – nawfal