假設我們有下面的類結構:聽繼承類的特定事件
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
爲什麼不添加一個枚舉來描述一個農民可能感興趣的東西。這與農民不需要了解具體的水果事件有什麼不同。但有了相當大的優勢,你現在只需要一個事件。 –