私は、ベースのFruit
クラスと導出されたApple
クラスのサンプルプログラムを持っています。果物代議員のリストに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`