Wenn ich meine Anwendung starte, habe ich ein paar Klassen, die benötigt werden, um bestimmte Dateien zu lesen, um eine Reihe von Standarddaten zu erstellen.Reagieren auf Anwendungstötungsereignisse während der Klasseninitialisierung
Der logische Ort (zu mir), dies zu tun, ist in einem Shared-Klassenkonstruktor; Die Idee wäre, ein Ereignis auf Klassenebene auszulösen, wenn das Lesen der Standarddatei fehlschlägt. Leider funktioniert dies nicht, da der Versuch, auf ein solches Ereignis zuzugreifen, um einen Handler an es anzuhängen, den Klassenkonstruktor auslöst, bevor das Ereignis angehängt wurde. In einem fehlgeschlagenen Fall wird der Konstruktor gestartet, löst das Fehlerereignis aus, der Konstruktor wird abgeschlossen und anschließend wird der Ereignishandler angefügt, nach das Ereignis wurde ausgelöst.
Die einzige andere Lösung, die ich denken kann, ist der Klasse eine „typeInitialisedSuccessfully“ boolean Eigenschaft zu geben und einen try/catch-Block setzt um jeden Aufruf eine Instanz der Klasse zu konstruieren, die mich unnötig kludgey scheint.
Kann jemand eine elegantere Lösung vorschlagen?
EDIT: Da dies eine grundlegende Klasse ist, die in fast jeder unserer Software-Tools in der einen oder anderen Form verwendet wird, würde ich eine Lösung bevorzugen, die zukünftige Programmierer darüber informiert, dass der Typinitialisierer aufgerufen werden muss Ich ging zunächst zum Shared Constructor als Lösung.