Gibt es eine Möglichkeit zu sagen, ob ein Event-Handler zu einem Objekt hinzugefügt wurde? Ich serialisiere eine Liste von Objekten in/aus dem Sitzungszustand, so dass wir den SQL-basierten Sitzungszustand verwenden können ... Wenn ein Objekt in der Liste eine Eigenschaft geändert hat, muss es markiert werden, wofür der Ereignishandler zuvor sorgte . Wenn nun die Objekte deserialisiert werden, wird der Event-Handler jedoch nicht abgerufen.Wurde bereits ein Event-Handler hinzugefügt?
In einem Anfall von leichtem Ärger fügte ich nur den Ereignishandler der Get-Eigenschaft hinzu, die auf das Objekt zugreift. Es wird jetzt aufgerufen, was großartig ist, außer dass es 5 Mal aufgerufen wird, also denke ich, dass der Handler immer hinzugefügt wird, wenn auf das Objekt zugegriffen wird.
Es ist wirklich sicher genug, um einfach zu ignorieren, aber ich würde es lieber so viel sauberer machen, indem ich überprüfe, ob der Handler bereits hinzugefügt wurde, also mache ich nur einmal.
Ist das möglich?
EDIT: Ich habe nicht unbedingt die volle Kontrolle darüber, welche Event-Handler hinzugefügt werden, so ist nur die Überprüfung auf null nicht gut genug.
auch sehen http://stackoverflow.com/questions/367523/how-to-ensure-a-event-ist-nur-einmal-abonniert-einmal –