0

我将 Unity Application 块用作简单的服务定位器。

我正在注册简单的对象,如下所示:

_serviceContainer.RegisterType<ISessionManager, SessionManager>();

我想通过仅指定 ISessionManager 在我的应用程序的其他位置重新注册该注册,这样我就不会在我的应用程序中分散接口实现逻辑。

4

1 回答 1

1

您不应滥用 Unity 作为服务定位器。ServiceLocator 被认为是现代软件架构中的一种反模式

您不应在应用程序的多个位置注册映射。在您的应用程序中应该有一个组合根,您可以在其中连接依赖容器并解析应用程序的主要对象。您的容器不应出现在组合根之外的应用程序代码中。

如果你坚持让你的架构保持原样:

_serviceContainer.RegisterInstance<ISessionManager>(mySessionManagerObject);

应该覆盖您的注册。但请注意,在应用程序运行时重新注册该依赖项可能会影响应用程序的其他部分。

于 2012-10-23T07:17:36.340 回答