我正在使用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