我只需要知道 MVVM Light 的 SimpleIoC 背后是什么?是现有的之一(Unity、Castle Windsor、StructureMap、MEF,也许是 Simple Injector ...)?或者它是由 MVVM Light 的开发团队实现的简单的一个?
有没有办法让 SimpleIoC 与特定的 IoC 一起工作?或者我应该使用服务定位器?
谢谢
我只需要知道 MVVM Light 的 SimpleIoC 背后是什么?是现有的之一(Unity、Castle Windsor、StructureMap、MEF,也许是 Simple Injector ...)?或者它是由 MVVM Light 的开发团队实现的简单的一个?
有没有办法让 SimpleIoC 与特定的 IoC 一起工作?或者我应该使用服务定位器?
谢谢
由于没有人回答这个问题,我做了一个研究。我迫不及待想知道 SimpleIoC 的背后是什么,这个问题Laurent可能会回答它。
但是第二个(有没有办法让 SimpleIoC 与特定的 IoC 一起工作?或者我应该使用服务定位器吗?)我现在可以回答了。
问题是它SimpleIoc.Default
是接口的一个实现IServiceLocator
,并且 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 接口...