Tengo un programa de ejemplo con una clase base Fruit
y una clase Apple
derivada.¿Cómo agregar un delegado de manzana a una lista de delegados de fruta?
class Testy
{
public delegate void FruitDelegate<T>(T o) where T : Fruit;
private List<FruitDelegate<Fruit>> fruits = new List<FruitDelegate<Fruit>>();
public void Test()
{
FruitDelegate<Apple> f = new FruitDelegate<Apple>(EatFruit);
fruits.Add(f); // Error on this line
}
public void EatFruit(Fruit apple) { }
}
Quiero tener una lista de delegados de frutas y poder agregar delegados de más frutas derivadas a la lista. Creo que esto tiene algo que ver con la covarianza o la contradicción, pero parece que no puedo resolverlo.
mensaje El error es (sin espacios de nombres):
The best overloaded method match for 'List<FruitDelegate<Fruit>>.Add(FruitDelegate<Fruit>)' has some invalid arguments`