MVVMLight Simple IOC - dynamische Registrierung und Aufhebung der Registrierung von Datendienst-Implementierungen

9

Ich habe eine WPF-Anwendung mit MVVM Light Toolkit-Unterstützung. Die Anwendung hat das folgende Szenario. Die Anwendung verfügt über zwei Datenverbindungsmodi. Einer ist WCF-Dienst und der andere direkte Datenbank . Die Anwendung sollte über einen der oben genannten Modi eine Verbindung zur Datenbank herstellen. Die Verbindungsmodusauswahl befindet sich im Anmeldefenster. Der Endbenutzer kann einen der Verbindungsmodi auswählen (WCF-Dienst oder direkte Datenbank), und basierend auf dieser Auswahl wird eine Liste der Verbindungskonfigurationen in das Kombinationsfeld geladen. (Bitte überprüfen Sie das angehängte Bild für weitere Informationen). Die Verbindungskonfigurationen befinden sich in einer lokalen XML-Konfigurationsdatei. Außerdem habe ich eine Standardverbindungskonfiguration, die zugewiesen werden sollte, wenn eine der Verbindungskonfigurationen ausgewählt ist.

Im View Model Locator registriere ich den Standarddienst wie folgt

%Vor%

Beide DbClient und DataServiceClient implementieren IDataservice .

Wenn in der Konfigurationsdatei bereits eine Standardverbindung angegeben ist, funktioniert der obige Code ordnungsgemäß, wenn der Ansichtsmodell-Locator die Ansichtsmodelle bei der Anwendung start registriert. IDataservice wird mit der Standardverbindungskonfiguration registriert.

Jetzt ist das eigentliche Problem, wenn der Benutzer eine Verbindungskonfiguration auswählt, diese Verbindungskonfiguration die Standardkonfiguration wird und ich möchte, dass MVVM Light die Registrierung des vorherigen Datendiensts aufheben und den neu ausgewählten registrieren und damit eine Verbindung zu den Daten herstellen kann .

Ich habe versucht, den folgenden Code in der Anmeldung klicken und es schlug fehl: (

%Vor%

Aktualisierter Code

%Vor%     
Dennis 06.12.2012, 06:22
quelle

1 Antwort

1

Ich würde einfach entfernen:

%Vor%

von Ihrem ViewModelLocator und ändern Sie den Code in SignInButtonClick zu:

%Vor%

Dadurch müssen Sie Ihren Dienst nur einmal registrieren und Sie können sicherstellen, dass Sie die richtige Schnittstelle registrieren.

    
Faster Solutions 07.12.2012, 09:44
quelle