Suponga que tiene la siguiente clase:pasar una colección de interfaz
class Car : IPainting
{
...
}
Entonces una función como esta:
void AddCars(IEnumerable<Car> collection)
A continuación, un fragmento de código como este:
Car bmw = new Car();
Car mercedes = new Car();
IPainting a = (IPainting) bmw;
IPainting b = (IPainting) mercedes;
IPainting[] paintings = new IPainting[] {a, b};
AddCars(paintings); // fails to compile
Este de Por supuesto, el curso no se compila porque el método AddCars() solo acepta una colección de Cars, pero de eso está hecho el conjunto de "pinturas".
Sé que C# 4.0 probablemente proporcionará una solución para esto. ¿Hay alguna solución para esto hoy?
Gracias,
Alberto
C# 4.0, no nos proporcionará una solución para el código que tiene aquí. Nunca podrá pasar algo un tipo que sea más alto en la herencia hie rarchy a un método que espera algo más bajo. Como han señalado otros, su método debería tener en IPainting - no Auto para que esto funcione. –