Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
5年前关闭。
Improve this question
我正在对具有困惑
是否有任何备忘单可了解MVVMLight SimpleIoc的用法(不是一般的IoC描述)?
2)默认情况下,每个对象都是单例。要解析对象以使其不是单例,您需要将唯一值传递给GetInstance调用:
3)要针对接口(interface)注册类:
4)要针对接口(interface)注册具体对象:
5)要注册具体类型:
6)要从接口(interface)解析对象:
7)直接解析对象(进行构建和依赖关系解析):
8)MVVM使执行设计时数据变得非常容易:
如果您处于设计时模式,它将自动注册您的设计时服务,从而使在VS设计器中工作时在 View 模型和 View 中存储数据变得非常容易。
希望这可以帮助。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
5年前关闭。
Improve this question
我正在对具有困惑
Messenger.Default(...)
位的软件进行升级。是否有任何备忘单可了解MVVMLight SimpleIoc的用法(不是一般的IoC描述)?
最佳答案
SimpleIoc婴儿床床单:
1)您在ViewModelLocator中注册了所有接口(interface)和对象
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)要针对接口(interface)注册类:
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
4)要针对接口(interface)注册具体对象:
SimpleIoc.Default.Register<IDataService>(myObject);
5)要注册具体类型:
SimpleIoc.Default.Register<MainViewModel>();
6)要从接口(interface)解析对象:
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设计器中工作时在 View 模型和 View 中存储数据变得非常容易。
希望这可以帮助。
10-08 02:58