【问题标题】:What is behind MVVM Light's SimpleIoCMVVM Light 的 SimpleIoC 背后是什么
【发布时间】:2013-01-02 16:58:42
【问题描述】:

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

有没有办法让 SimpleIoC 与特定的 IoC 一起工作?还是应该使用Service Locator

谢谢

【问题讨论】:

    标签: .net mvvm ioc-container


    【解决方案1】:

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

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

    问题是SimpleIoc.DefaultIServiceLocator 接口的实现,MVVMLight Toolkit 使用服务定位器模式工作。所以如果我们想使用任何 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 接口...

    【讨论】:

    • 有一篇文章更详细地展示了这是如何完成的here。但是 IServiceLocator 接口有点狭窄。我认为你必须走出它才能获得团结的全部力量
    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    相关资源
    最近更新 更多