web-dev-qa-db-de.com

Wie verwende ich MVVMLight SimpleIoc?

Ich überarbeite meine Software, die unordentliche Messenger.Default(...) Bits hat.

Gibt es einen Spickzettel, um die Verwendung von MVVMLight SimpleIoc zu kennen (keine allgemeine IoC-Beschreibung)?

54
Youngjae

SimpleIoc Spickzettel:

1) Sie registrieren alle Ihre Schnittstellen und Objekte im ViewModelLocator

class ViewModelLocator 
{ 
    static ViewModelLocator() 
    {         
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);          
        if (ViewModelBase.IsInDesignModeStatic) 
        {              
            SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();          
        }          
        else         
        {              
            SimpleIoc.Default.Register<IDataService, DataService>();          
        }          
        SimpleIoc.Default.Register<MainViewModel>();                  
        SimpleIoc.Default.Register<SecondViewModel>(); 
    }      


    public MainViewModel Main 
    {  
        get  
        {      
            return ServiceLocator.Current.GetInstance<MainViewModel>();  
        } 
    }
} 

2) Jedes Objekt ist standardmäßig ein Singleton. Um ein Objekt so aufzulösen, dass es kein Singleton ist, müssen Sie dem GetInstance-Aufruf einen eindeutigen Wert übergeben:

SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());

3) So registrieren Sie eine Klasse für eine Schnittstelle:

SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();  

4) So registrieren Sie ein konkretes Objekt für eine Schnittstelle:

SimpleIoc.Default.Register<IDataService>(myObject);     

5) So registrieren Sie einen konkreten Typ:

SimpleIoc.Default.Register<MainViewModel>();   

6) So lösen Sie ein Objekt von einer Schnittstelle aus auf:

SimpleIoc.Default.GetInstance<IDataService>();

7) So lösen Sie ein Objekt direkt auf (führt Aufbau- und Abhängigkeitsauflösung durch):

SimpleIoc.Default.GetInstance<MainViewModel>();

8) MVVM macht das Erstellen von Entwurfszeitdaten wirklich einfach:

if (ViewModelBase.IsInDesignModeStatic) 
{              
    SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();          
}          
else         
{              
    SimpleIoc.Default.Register<IDataService, DataService>();          
}  

Wenn Sie sich im Entwurfszeitmodus befinden, werden Ihre Entwurfszeitdienste automatisch registriert, sodass Sie bei der Arbeit im VS-Designer ganz einfach Daten in Ihren Ansichtsmodellen und Ansichten haben.

Hoffe das hilft.

134