Wo zum speichern von Programm-Einstellungen/Status in einer MVVM-Anwendung

Ich experimentiere mit MVVM für die erste Zeit und wirklich wie die Trennung von Verantwortlichkeiten. Natürlich zu jedem design pattern erst löst viele Probleme - nicht alle. So versuche ich herauszufinden, wo Sie speichern den Zustand der Anwendung und den Speicherort für Anwendungs-Breite Befehle.

Lässt sagen meiner Anwendung eine Verbindung zu einer bestimmten URL. Ich habe eine ConnectionWindow und ein ConnectionViewModel unterstützen das sammeln dieser Informationen aus der Benutzer und die Berufung auf Befehle, um eine Verbindung zu der Adresse. Das nächste mal die Anwendung gestartet wird, möchte ich wieder zu diesem gleichen Adresse ohne Aufforderung des Anwenders aus.

Meine Lösung bisher ist die Erstellung einer ApplicationViewModel liefert einen Befehl, um die Verbindung zu einer bestimmten Adresse, und speichern Sie diese Adresse, um einige persistente Speicherung (wo es eigentlich gespeichert ist irrelevant für diese Frage). Unten ist eine gekürzte Klasse Modell.

Wird in der application view model:

public class ApplicationViewModel : INotifyPropertyChanged
{
    public Uri Address{ get; set; }
    public void ConnectTo( Uri address )
    { 
        //Connect to the address
        //Save the addres in persistent storage for later re-use
        Address = address;
    }

    ...
}

Verbindung anzeigen Modell:

public class ConnectionViewModel : INotifyPropertyChanged
{
    private ApplicationViewModel _appModel;
    public ConnectionViewModel( ApplicationViewModel model )
    { 
        _appModel = model; 
    }

    public ICommand ConnectCmd
    {
        get
        {
            if( _connectCmd == null )
            {
                _connectCmd = new LambdaCommand(
                    p => _appModel.ConnectTo( Address ),
                    p => Address != null
                    );
            }
            return _connectCmd;
        }
    }    

    public Uri Address{ get; set; }

    ...
}

Die Frage ist also: Ist ein ApplicationViewModel der richtige Weg, dies zu behandeln? Wie sonst könnte Sie die store-Anwendung, Staat?

EDIT: ich würde gerne auch wissen, wie diese auf die Testbarkeit. Einer der primären Gründe für den Einsatz von MVVM ist die Fähigkeit zum testen der Modelle ohne eine host-Anwendung. Ich speziell bin daran interessiert, Einblick in die Funktionsweise zentrale app-Einstellungen wirken sich auf Testbarkeit und die Fähigkeit zu improvisieren aus den abhängigen Modellen.

Schreibe einen Kommentar