Entwickler-Ecke
Basistechnologien - Problem mit abbonierten Events /Designfrage
Trashkid2000 - Sa 02.04.11 10:28
Titel: Problem mit abbonierten Events /Designfrage
Hallo liebe Community,
hatte gestern auf Arbeit ein lustiges Problem, das mich fast zur Verzweifelung gebracht hat.
Kurze Umschreibung des Designs:
Also, ich habe eine Klasse "CustomDbConnection", die IDbConnection implementiert und eine andere DbConnection wrappt, also nur die Methoden bzw. Properties weiterleitet. Die Klasse schmeißt zwei Events. Eins, bevor sich der Status der Verbindung ändert (Open, Close), und eins danach. Die Events brauche ich, da ich auf einer Datenbank mit Applikationsrollen arbeite und so das aktivieren bzw. deaktivieren einer Rolle manage. So, also ich erstelle erstmal eine Instanz der Klasse und halte mir die Connection lokal (für die TableAdapter eines DataSets).
Dann gibt es noch eine Klasse "ConnectionManager", die im Konstruktor die Connection und die Credentials für die Applikationsrolle übergeben bekommt. Sie abboniert die beiden Events und handelt dann das aktivieren und deaktivieren der Rolle. Soweit so gut.
Jetzt zu dem Problem:
Bei der Anmeldung (was ja normalerweise nur 1x passiert) erzeuge ich eine Instanz des ConnectionManagers. Wenn nun allerdings die Credentials fehlerhaft sind, so muss ja die Anmeldung nochmal versucht werden. Also wird eine neue Instanz mit den neuen Credentials erzeugt. Wenn nun also beim zweiten Mal die Credentials korrekt sind, so scheitert die Anmeldung trotzdem, da die Eventhandler in dem "alten" Objekt aufgerufen werden. Habe jetzt erstmal eine Methode "SetNewCredentials" in die Klasse implementiert, aber das finde ich nicht so schön.
Wie könnte man denn das Problem umgehen?
Vielleicht die Connection erst im ConnectionManager erzeugen und als Property nach aussen geben? Oder ein Singleton :?
Vielen Dank schonmal an Euch.
Ansonsten ein schönes Wochenende
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!