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)?
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.