我正在使用Galasoft MVVM Toolkit和ServiceLocator来管理我的应用程序中的服务。 我想管理两种不同的服务实现。应该在调试/设计模式下注入存根实现,并在其他情况下注入实际的实现。 伪代码可能是:MVVM Light Toolkit(galasoft)注入存根
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)时是否有解决方法来处理服务存根?
你想使用比生产一个不同的实现调试?当生产中出现问题时,你是否希望发疯?你为什么这样对自己做? – thomasb 2015-02-23 16:36:56
因为真正的服务将使用数据库来存储/查询数据,我希望能够使用不需要连接到数据库的存根进行调试。在这个存根中,数据存储在一个List中。如果真正的服务仍在开发中(由团队中的其他人员开发),它允许您开发应用程序的其他组件,而无需等待服务的全面实施。我通常在Spring中像这样工作。所以,也许Spring是唯一的解决方案... – ltu 2015-02-23 16:59:58
好吧,那么你不能使用常规的依赖注入框架(你可以使用像SimpleInjector或LightInject这样的轻量级框架),并且只需在获取最终DB模块时替换引导程序? – thomasb 2015-02-23 20:41:17