【问题标题】:Where to put a concrete server if all the modules will use it?如果所有模块都将使用它,那么在哪里放置一个具体的服务器?
【发布时间】:2012-09-08 17:34:40
【问题描述】:

一直以来,在我的INFRASTRUCTURE 模块中设置作为服务工作的接口。每个模块都会创建该服务的具体类。

但这一次,我需要一个必须使用所有模块的服务

在我拥有的基础设施方面:

public interface IApplicationMenuRegistry
{
    void RegisterMenuItem(string menuItemName, string description, Type viewType);
}

每个moduleInit接收到这个接口,并注册一个菜单项。

我应该在哪里创建具体服务ApplicationMenuRegistry?在基础设施中?还是在另一个模块中?

【问题讨论】:

    标签: c# prism mef


    【解决方案1】:

    最正确的答案是:“视情况而定”。有时您应该在“基础设施”中创建具体服务,有时在其他地方创建。但我建议你看看DI frameworks,有一个lot of different .NET implementations。让 DI 框架关心为目标对象提供IApplicationMenuRegistry 实现。

    【讨论】:

    • 我使用 MEF Container 作为 DI。所以你是说我必须从引导程序配置它?
    • @DarfZon 是的,为什么不呢。当然,容器应该在第一次使用之前进行配置,但具体时间取决于您。
    【解决方案2】:

    例如。说 - 这取决于。理想情况下 - 我认为它应该在单独的模块中,并且您应该使用 Module dependencies 来指定所有模块都依赖于一个“启动”模块。或者,您可以以某种方式首先在引导程序中初始化您的“共享”模块,然后再初始化所有其他模块。 “学术方式”是“模块依赖”,但现实生活总是更复杂;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      相关资源
      最近更新 更多