Ich brauche so zu Fall des privaten Feld der Klasse befestigen:Wie "Ereignis" von privatem Feld "retrow"?
MyClass myInstance = ...
...
myInstance.checkbook.RangeMissing += new EventHandler<RangeMissingEventArgs>(RangeMissing);
zu tun, dass ich checkbook public
zu tun haben. Aber ich möchte checkbook private
behalten, ich möchte nur "RangeMissing" -Ereignis fangen.
Also brauche ich Art von "retrow" in MyClass-Klasse von Event RangeMissing?
Natürlich kann ich das "explizit" tun (MyClass an Checkbook anschließen, RangeMissing-Ereignis abfangen, neues RangeMissing-Ereignis auslösen), aber ich denke, es ist zu kompliziert.
Habe ich ein Designproblem? Soll ich checkbook
öffentlich machen? Sollte ich nur 10 Zeilen zusätzlichen Code schreiben und das Ereignis nur explizit in der Klasse MyClass
erneut auslösen?
Sie sollten 'checkbook' Feld ausblenden und erstellen Sie ein neues Ereignis innerhalb' MyClass' namens 'RangeMissing'. Dann in "MyClass" register für "checkbook.RangeMissing" Benachrichtigung und rufe 'this.RangeMissing (etc.)' in der Handhabung auf. –
Wir werfen keine Ereignisse, wir erheben sie. –
Ich denke, dass Sie diese zehn Zeilen für Kapselungen Sake hinzufügen sollten. Auf diese Weise wird RangeMissing zum Ereignis Ihrer Klasse und niemand anders weiß (und sollte nicht wissen), was gefeuert wurde. –