MVVM Light - 简单的IoC + CommonServiceLocator?试图了解目的

1 .net ioc-container inversion-of-control mvvm

所以我知道CommonServiceLocator是一个允许你切换出不同的IoC容器的中间环节,但是看一下MVVM Light的示例代码,特别是ViewModelLocator,从某种意义上说,它似乎很有意思

您将SimpleIoC注册为默认定位器,但同时在SimpleIoc默认实例上调用Register.

因此,如果您将来要撕掉SimpleIoC,这是不是意味着您需要更新所有注册电话?

另一个问题是,过去曾使用Castle Windsor,并且通过.config文件配置它们来支持加载类型,它在Windows 8场景中如何工作?

我还在尝试找到现在使用IoC的场景吗?

LBu*_*ion 5

Common Service Locator实现保证您不需要替换getter调用(GetInstance,GetAllInstances等),但它们在那里停止.注册是使IOC容器独一无二的原因; 例如,正如您所提到的,一些支持配置配置文件(SimpleIoc没有).所以,是的,当您将SimpleIoc替换为您选择的另一个IOC容器时,通常会替换注册部件.请注意,它通常是正常的,因为这些调用通常分组在一个公共位置,因此它们很容易替换.

有关详细信息,请查看http://commonservicelocator.codeplex.com/页面.

请注意,我将SimpleIoc添加到MVVM Light的目标不是提供功能强大的IOC容器.事实上,我向现有的(温莎城堡,StructureMap,Unity等)倾斜.相反,我想提供一个简单的实现,它将吸引IOC容器世界中没有经验的用户.这个想法是,当他们需要更高级的功能时,他们将转向另一个更复杂的实现.

希望这是有道理的!洛朗