You*_*jae 55 c# wpf inversion-of-control mvvm-light windows-store-apps
我正在修改我的软件,它有杂乱的Messenger.Default(...)位.
有没有任何备忘单知道MVVMLight SimpleIoc用法(不是一般的IoC描述)?
Fas*_*ons 136
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>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
2)默认情况下,每个对象都是一个单例.要解析对象以使其不是单例,您需要将唯一值传递给GetInstance调用:
SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
Run Code Online (Sandbox Code Playgroud)
3)针对接口注册类:
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
Run Code Online (Sandbox Code Playgroud)
4)针对接口注册具体对象:
SimpleIoc.Default.Register<IDataService>(myObject);
Run Code Online (Sandbox Code Playgroud)
5)注册具体类型:
SimpleIoc.Default.Register<MainViewModel>();
Run Code Online (Sandbox Code Playgroud)
6)从接口解析对象:
SimpleIoc.Default.GetInstance<IDataService>();
Run Code Online (Sandbox Code Playgroud)
7)直接解析对象(构建和依赖解析):
SimpleIoc.Default.GetInstance<MainViewModel>();
Run Code Online (Sandbox Code Playgroud)
8)MVVM使设计时数据变得非常简单:
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
Run Code Online (Sandbox Code Playgroud)
如果您处于设计时模式,它将自动注册您的设计时服务,这使得在VS设计器中工作时,您的视图模型和视图中的数据非常容易.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
41607 次 |
| 最近记录: |