假设我们有下面的类结构:听继承类的特定事件
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
中的每一种新事件似乎都不是我的解决方案。
这是一个家庭作业吗? –
不,我正在试图找到一种方法,不要创建一个巨大的农场类。 – Marnix
为什么不添加一个枚举来描述一个农民可能感兴趣的东西。这与农民不需要了解具体的水果事件有什么不同。但有了相当大的优势,你现在只需要一个事件。 –