In c# wordt het aangeraden om protected event raiser methods te maken voor elk event zodat subclasses toegang hebben tot het event.
Of tenminste dat ben ik vaak tegen gekomen op msdn en ook in dit artikel:
http://www.codeproject.com/KB/cs/event_fundamentals.aspx
Even een voorbeeldje:
Als in de bovenstaande code StateChanged geen handlers heeft dan zijn de StateChangedArgs voor niks aangemaakt.
Hier moet volgens mij een betere manier voor zijn, het is mogelijk om alle data die in de StateChangedArgs gaan mee te sturen aan de OnStageChanged method waar dan vervolgens in de raiser method zelf de args worden aangemaakt.
Andere oplossing zou zijn alleen OnStateChanged aan te roepen als StateChanged handlers heeft (!= null)
Wat denken jullie?
Of tenminste dat ben ik vaak tegen gekomen op msdn en ook in dit artikel:
http://www.codeproject.com/KB/cs/event_fundamentals.aspx
Even een voorbeeldje:
C#:
1
2
3
4
5
6
7
8
9
10
| public delegate void StateChanged(StateChangedArgs args); protected virtual void OnStateChanged(StateChangedArgs args) { if (StateChanged != null) { // Op dit punt zijn er event args die voor niks zijn aangemaakt StateChanged(args); } } |
Als in de bovenstaande code StateChanged geen handlers heeft dan zijn de StateChangedArgs voor niks aangemaakt.
Hier moet volgens mij een betere manier voor zijn, het is mogelijk om alle data die in de StateChangedArgs gaan mee te sturen aan de OnStageChanged method waar dan vervolgens in de raiser method zelf de args worden aangemaakt.
C#:
1
2
3
4
5
6
7
8
| protected virtual void OnStateChanged(string iets, int nummer) { if (StateChanged != null) { StateChangedArgs args = new StateChangedArgs(iets, nummer); StateChanged(args); } } |
Andere oplossing zou zijn alleen OnStateChanged aan te roepen als StateChanged handlers heeft (!= null)
C#:
1
2
3
4
5
| if (StateChanged != null) { StateChangedArgs args = new StateChangedArgs(iets, nummer); OnStateChanged(args); } |
Wat denken jullie?