2011-10-24 9 views
0

質問はすべてそれを言う。EventHandlerの "オブジェクト送信者"は十分ですか?または、私のカスタムEventArgsに送信者の参照を含めるべきですか?

関連の思考/質問:

は「bubble-up」イベントは、その後、「インターセプト」イベントのない元の送信者を変更する方法はありますか?

実装例:

public class Wheel 
{ 
    public EventHandler<WheelTurningEventArgs> Turning; 
} 

これは、EventArgsの中に、送信者なしのいずれかです。

public class WheelTurningEventArgs : EventArgs 
{ 
     public int TotalTurnCount { get; set; } 
} 

...これはEventArgsの中に、送信者を有するものです。

public class WheelTurningEventArgs : EventArgs 
{ 
     public Wheel Wheel {get; set;} //include a reference to the wheel that invoked this event 
     public int TotalTurnCount { get; set; } 

} 
+0

あなたの 'EventArgs'クラスにパブリックセッターがあるのはなぜですか?それを不変にするのはもっと意味がありませんか? – svick

+0

また、「あなたがリンクしている回答」(http://stackoverflow.com/questions/217233/bubbling-up-events/217366#217366)のように「バブリングアップ」を実装すると、元の送信者が保持されます。 – svick

+0

@svick申し訳ありませんが、私は別の方法の周りを意味しました。 – Ian

答えて

0

これはルーティングイベントである場合は、WheelTurningEventArgsは、元のソースだけでなく、送信者を持つことになりますRoutedEventArgsクラスから継承する必要があります。

関連する問題