1

所以我正在寻找一些说明如何从我的应用程序中删除服务定位器。

我有一个 ViewManagerService 负责了解哪个视图处于活动状态,哪些视图处于打开状态并创建一个新视图。

目前,我的 ViewModel 通过构造函数注入将 IViewManagerService 注入其中。这些 ViewModel 公开 ICommand,当被调用时可以调用

viewManager.Transition("MyCoolView", somePrimaryKey);

ViewManagerService 然后使用一个服务定位器来查找并实例化一个带有键“MyCoolView”的新视图。使用密钥字符串的原因是我可以将 View 与 ViewModel 分离。我想保持 ViewManagerService 足够通用,以便我可以将它用于其他应用程序,所以我不希望它依赖于特定的 IAbstractFactory 接口。

任何提示/建议?

4

1 回答 1

1

您可以使用 WPF 的数据模板引擎完全摆脱魔术字符串。最好的方法是使用MVVM 模式。它与 DI 正交,但却是一个很好的推动者。

一旦你完成了这种转变,你就可以拥有一个纯粹的 DI 架构,而不必依赖Service Locator 反模式

于 2010-08-03T08:07:49.570 回答