2011-10-24 30 views
0

問題說明了一切。是EventHandler <T>中的「對象發件人」還是應該在我的自定義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'類有公共setter?讓它變得不可變更難嗎? – svick

+0

此外,如果您在[鏈接的答案]中實現了「bubbling up」(http://stackoverflow.com/questions/217233/bubbling-up-events/217366#217366),它將*保留原始發件人。 – svick

+0

@svick對不起,我的意思是相反的。 – Ian

回答

0

如果這是一個路由事件,在WheelTurningEventArgs應該從RoutedEventArgs類,這將有原來的源以及發送者繼承。

相關問題