MVVM Light的SimpleIoC背后是什么

时间:2013-01-18 21:43:54

标签: .net mvvm ioc-container

我只需要知道MVVM Light的SimpleIoC背后是什么?是现有的(Unity,Castle Windsor,StructureMap,MEF,也许是Simple Injector ......)?或者它是由MVVM Light的开发团队实现的简单的一个?

有没有办法使SimpleIoC能够与特定的IoC一起使用?或者我应该使用Service Locator

由于

1 个答案:

答案 0 :(得分:4)

由于没有人回答这个问题,我做了一个研究。我迫不及待想知道SimpleIoC的背后是什么,这个问题Laurent可能会回答它。

但是第二个(有没有办法让SimpleIoC与特定的IoC一起工作?或者我应该使用服务定位器?)我现在可以回答它。

问题是SimpleIoc.DefaultIServiceLocator接口的实现,MVVMLight Toolkit使用Service Locator模式工作。因此,如果我们希望使用任何IoC库,我们只需要实现IServiceLocator接口,然后我们就可以使用它。

例如,使用Unity 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接口...