У меня есть пример программы с базовым классом Fruit
и производным классом Apple
.
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) { }
}
Я хочу иметь список делегатов фруктов и иметь возможность добавлять в список делегатов более производных фруктов. Я считаю, что это имеет какое-то отношение к ковариации или контравариантности, но я не могу этого понять.
Сообщение об ошибке (без пространств имен):
The best overloaded method match for 'List<FruitDelegate<Fruit>>.Add(FruitDelegate<Fruit>)' has some invalid arguments`