MVVMLight SimpleIocの使用方法
Messenger.Default(...)
ビットが乱雑なソフトウェアを改良しています。
MVVMLight SimpleIocの使用法(一般的なIoCの説明ではありません)を知るためのチートシートはありますか?
SimpleIocベビーベッドシート:
1)すべてのインターフェイスとオブジェクトを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)デフォルトでは、すべてのオブジェクトはシングルトンです。シングルトンではないようにオブジェクトを解決するには、GetInstance呼び出しに一意の値を渡す必要があります。
SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
3)インターフェイスに対してクラスを登録するには:
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
4)インターフェイスに対して具象オブジェクトを登録するには:
SimpleIoc.Default.Register<IDataService>(myObject);
5)具象型を登録するには:
SimpleIoc.Default.Register<MainViewModel>();
6)インターフェイスからオブジェクトを解決するには:
SimpleIoc.Default.GetInstance<IDataService>();
7)オブジェクトを直接解決するには(ビルドアップと依存関係の解決を行います):
SimpleIoc.Default.GetInstance<MainViewModel>();
8)MVVMを使用すると、設計時データを非常に簡単に作成できます。
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
デザインタイムモードの場合は、デザインタイムサービスが自動的に登録されるため、VSデザイナーで作業するときにビューモデルとビューにデータを簡単に登録できます。
お役に立てれば。