如果所有模块都使用它,在何处放置具体服务器?

时间:2012-09-08 17:34:40

标签: c# prism mef

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

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

在基础设施方面我有:

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

每个moduleInit都会收到此界面,并注册一个菜单项。

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

2 个答案:

答案 0 :(得分:2)

最正确的答案是:“这取决于”。有时您应该在“基础设施”中创建具体服务,有时在其他地方。但我建议您查看DI frameworks,有lot of different .NET implementations。让DI框架关心如何向目标对象提供IApplicationMenuRegistry实现。

答案 1 :(得分:0)

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