我使用Galasoft MVVM Toolkit和ServiceLocator来管理我的应用程序中的服务。 我想管理两种不同的服务实现。应该在调试/设计模式下注入存根实现,并且在其他情况下应该注入实际实现。 伪代码可以是:
public TmepServiceLocator(){
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
//If DEBUG/DESIGN MODE
//SimpleIoc.Default.Register<IMyService>(() => new MyServiceStub());
//ELSE
SimpleIoc.Default.Register<IMyService>(() => new MyServiceImpl());
}
public IMyService MyService{
get{return ServiceLocator.Current.GetInstance<IMyService>();}
}
我该怎么办?
在开发时(并且不使用Spring),您是否有解决方法来使用服务存根?
答案 0 :(得分:0)
在MVVM Light中,您通常使用ViewModelLocator类型的对象进行依赖注入。
您可以使用静态方法ViewModelBase.IsInDesignModeStatic。
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IMyService, StubServiceImplementation>();
}
else
{
SimpleIoc.Default.Register<IMyService, RealServiceImplementation>();
}
除此之外你可以使用条件
#if DEBUG
SimpleIoc.Default.Register<IMyService, StubServiceImplementation>();
#else
SimpleIoc.Default.Register<IMyService, RealServiceImplementation>();
#endif