He una interfaz definida como:¿Cómo puedo convertir una lista <interface> en la lista <concrete>?
public interface MyInterface {
object foo { get; set; };
}
y una clase que implementa la interfaz:
public class MyClass : MyInterface {
object foo { get; set; }
}
entonces crear una función que devuelve un ICollection así:
public ICollection<MyClass> Classes() {
List<MyClass> value;
List<MyInterface> list = new List<MyInterface>(
new MyInterface[] {
new MyClass {
ID = 1
},
new MyClass {
ID = 1
},
new MyClass {
ID = 1
}
});
value = new List<MyClass>((IEnumerable<MyClass>) list);
return value;
}
Se compilaría pero arrojaría un
No se puede convertir el objeto del tipo 'System.Collections.Generic.List
1[MyInterface]' to type 'System.Collections.Generic.IEnumerable
1 [MyClass]'.
excepción. ¿Qué estoy haciendo mal?
Esto funcionará en .Net 2.0 o superior y no sólo como LINQ System.Collections.Generic.List <> apoya ConvertAll() directamente. –
Gracias, @Ritch. Pensé que 'ConvertAll' era un método de Linq, pero no me había molestado en verificarlo. –
¡Esto hizo el truco! Gracias JSBangs. – acermate433s