如何使用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)默认情况下,每个对象都是单例。 要parsing一个对象,使其不是一个单例,你需要传递一个唯一的值给GetInstance调用:
SimpleIoc.Default.GetInstance<MainViewModel>(Guid.NewGuid().ToString());
3)通过接口注册一个类:
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
4)通过接口注册具体对象:
SimpleIoc.Default.Register<IDataService>(myObject);
5)注册具体types:
SimpleIoc.Default.Register<MainViewModel>();
6)从接口parsing对象:
SimpleIoc.Default.GetInstance<IDataService>();
7)直接parsing对象(构build和依赖parsing):
SimpleIoc.Default.GetInstance<MainViewModel>();
8)MVVM使得devise时数据非常简单:
if (ViewModelBase.IsInDesignModeStatic) { SimpleIoc.Default.Register<IDataService, Design.DesignDataService>(); } else { SimpleIoc.Default.Register<IDataService, DataService>(); }
如果您处于devise时模式,它将自动注册您的devise时服务,使得在VSdevise器中工作时,您的视图模型和视图中的数据变得非常简单。
希望这可以帮助。