1

所以我知道 CommonServiceLocator 是一个中介联系,允许您切换不同的 IoC 容器,但是查看 MVVM Light 的示例代码,特别是 ViewModelLocator,在某种意义上似乎很有趣

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

因此,如果您将来要拆除 SimpleIoC,是不是意味着您需要更新所有注册调用?

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

我仍在尝试找到现在使用 IoC 有意义的场景?

4

1 回答 1

5

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

有关更多信息,请查看http://commonservicelocator.codeplex.com/页面。

请注意,我将 SimpleIoc 添加到 MVVM Light 的目的并不是提供一个全能的 IOC 容器。事实上,我向现有的(Castle Windsor、StructureMap、Unity 等)鞠躬。相反,我想提供一个简单的实现来吸引 IOC 容器世界中没有经验的用户。这个想法是,当他们需要更高级的功能时,他们将转向另一个更复杂的实现。

希望这是有道理的!洛朗

于 2012-04-06T12:16:40.640 回答