Mam przykładowy program z podstawową klasą Fruit
i pochodną klasy Apple
.Jak dodać delegata jabłkowego do listy delegatów owoców?
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) { }
}
Chcę mieć listę delegatów owocowych i być w stanie dodać więcej delegatów owoców pochodzących z listy. Wierzę, że ma to coś wspólnego z kowariancją lub kontrawariancją, ale nie mogę tego zrozumieć.
komunikat Błąd jest (bez nazw):
The best overloaded method match for 'List<FruitDelegate<Fruit>>.Add(FruitDelegate<Fruit>)' has some invalid arguments`