我改造我的软件,该软件具有凌乱Messenger.Default(...)
位。
是否有任何小抄知道MVVMLight SimpleIoc使用(而不是一般的IoC说明)?
我改造我的软件,该软件具有凌乱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设计师的工作时,在你的ViewModels和视图中的数据。
希望这可以帮助。