我正在修改我的软件,它有一些凌乱的Messenger.Default(...)
位。
有没有什么小抄可以知道MVVMLight SimpleIoc的用法(不是一般的IoC描述)?
发布于 2012-12-11 00:32:56
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设计器中工作时在视图模型和视图中拥有数据变得非常容易。
希望这能有所帮助。
https://stackoverflow.com/questions/13795596
复制相似问题