Предположим, у нас есть следующая структура класса:
public class Fruit
{
public event EventHandler<RipeEventArgs> Ripe;
}
public class Apple:Fruit
{
public event EventHandler<FallEventArgs> FallFromTree;
}
public class Farm
{
List<Fruit> fruits;
}
public class Farmer
{
private Farm myFarm;
public Farmer()
{
// listen to all FallFromTree events coming from the farm
myFarm.WHAT += AppleFallen;
}
public void AppleFallen(object sender, FallEventArgs e) {}
}
Вопрос : Как мне убедиться, что фермер может прослушивать все события FallFromTree с любого яблока на ферме и любого яблока, которое будет создано в будущем?
Я думал об отдельных событиях пузырей, но это означало бы, что Farm
должен определять каждое событие, которое также охватывается Apple
. Проблема в том, что я буду создавать много разных фруктов с разными событиями, и важно, чтобы какой-то особый фермер мог слушать только определенные события, которые приходят с фермы. Поэтому определение каждого нового типа события в Farm
не кажется мне решением.