我正在对软件进行升级,该软件有些混乱Messenger.Default(...)。
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设计器中工作时在视图模型和视图中存储数据变得非常容易。
希望这可以帮助。