の特定のイベントを聴く:我々は以下のクラス構造を持っていると仮定継承したクラス
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
の新しい種類のイベントをすべて定義することは、私の解決策のようには思えません。
これは宿題ですか? –
いいえ、私は巨大な 'Farm'クラスを作成しない方法を見つけようとしています。 – Marnix
農家が興味を持っている可能性があるすべてのものを記述する列挙型を追加するだけではなく、特定の果物イベントについて農家が知っていることと異なるものではありません。しかし、あなたは今や単一のイベントしか必要としないというかなりの利点があります。 –