7
我有一個基地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`