2013-01-18 48 views
2

我只需要知道MVVM Light的SimpleIoC背後是什麼?是現有的(統一,溫莎城堡,StructureMap,MEF,也許是簡單的噴油器...)?或者MVVM Light的開發團隊實施它很簡單嗎?MVVM Light的SimpleIoC背後是什麼

有沒有辦法讓SimpleIoC與特定的IoC協同工作?或者我應該使用Service Locator

謝謝

回答

4

由於沒有人回答這個問題,我做了一個研究。我迫不及待地想知道SimpleIoC的背後,這個問題Laurent誰可以回答。

但是第二個(是否有一種方法可以使SimpleIoC與特定的IoC協同工作?還是應該使用Service Locator?)我現在可以回答它。

問題是,SimpleIoc.DefaultIServiceLocator接口的實現,而MVVMLight Toolkit使用Service Locator模式工作。所以如果我們希望使用任何IoC庫,我們只需要實現IServiceLocator接口,然後我們就可以使用它。

例如,使用統一的IoC:

public ViewModelLocator() 
    { 
     var container = new UnityContainer(); 

     //ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 
     ServiceLocator.SetLocatorProvider(() => new UnityServiceLocator(container)); 
     //If we wish use another IoC we must implement the IServiceLocator interface 


     ////if (ViewModelBase.IsInDesignModeStatic) 
     ////{ 
     //// // Create design time view services and models 
     //// SimpleIoc.Default.Register<IDataService, DesignDataService>(); 
     ////} 
     ////else 
     ////{ 
     //// // Create run time view services and models 
     //// SimpleIoc.Default.Register<IDataService, DataService>(); 
     ////} 

     container.RegisterType<MainViewModel>(); 
     //SimpleIoc.Default.Register<MainViewModel>(); 
    } 

此代碼是ViewModelLocator的構造。 UnityServiceLocator類實現IServiceLocator接口...

+0

有一個帖子顯示瞭如何更詳細地完成[這裏](http://www.codeproject.com/Tips/655515/Integrating-Uni​​ty-Container-與-MVVM-光框架原理)。但是IServiceLocator接口有點束縛。我想你必須走出去才能獲得團結的全部力量 – Corcus