4 Stimmen

Sollte eine abgeleitete Klasse die Ereignisse einer Basisklasse behandeln? (C# / WPF)

Ich erstelle eine Klasse, die von der WPF abgeleitet ist RichTextBox Steuerelement und ich muss etwas Code in den Ereignissen Kopieren und Einfügen ausführen.

Ich weiß, dass es, wann immer möglich, die beste Praxis ist, ereignisbasierten Code in einer abgeleiteten Klasse zu implementieren, indem die Methode der Basisklasse, die das Ereignis auslöst, überschrieben wird. In diesem Fall gibt es jedoch keine solche Methode. Ist es also akzeptabel, dass meine abgeleitete Klasse einen Ereignishandler zu den Ereignissen ihrer eigenen Basisklasse hinzufügt?

Wenn ich einen Ereignishandler hinzufüge, gehe ich davon aus, dass er explizit entfernt werden sollte, wenn das Steuerelement entsorgt wird. Ich bin mir jedoch nicht sicher, wie ich dies am besten im Fall von RichTextBox da WPF-Steuerelementklassen keinen Mechanismus zur Erkennung der Entsorgung zu haben scheinen.

Irgendwelche Vorschläge, bitte?

Danke! Tim

4voto

Thomas Levesque Punkte 277723

Natürlich können Sie auch Ereignisse der Basisklasse behandeln. Dies wird üblicherweise für die Loaded Ereignis, zum Beispiel, da es keine OnLoaded Methode.

Sie brauchen sich keine Gedanken über das Entfernen des Handlers zu machen: Da der Herausgeber und der Abonnent des Ereignisses dieselbe Instanz sind, wird das Entfernen des Handlers die GC nicht daran hindern, Ihr Objekt zu sammeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X