2012-09-08 24 views
0

所有的時間,在我的INFRASTRUCTURE模塊設置作爲服務工作的接口。並且每個模塊創建該服務的具體類。如果所有的模塊都使用它,那麼在哪裏放置一個具體的服務器?

但是這一次,我需要一個服務,將不得不使用所有的模塊

在基礎設施方面,我有:

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

每個moduleInit收到此接口,並且它會註冊一個菜單項。

我應該在哪裏創建具體的服務ApplicationMenuRegistry?在基礎設施?或者在另一個模塊?

回答

2

最正確的答案是:「這取決於」。有時你應該在「基礎設施」中創建具體的服務,有時候在其他地方。但我建議你看看DI frameworks,有一個lot of different .NET implementations。讓DI框架關心如何將IApplicationMenuRegistry實現提供給目標對象。

+0

10我使用MEF Container作爲DI。所以你告訴我必須從引導程序配置它? –

+0

@DarfZon是的,爲什麼不。當然,容器應該在第一次使用之前進行配置,但是完全取決於您的容器。 –

0

As ie。說 - 這取決於。理想情況下 - 我認爲它應該在單獨的模塊中,並且您應該使用Module dependencies來指定所有模塊都依賴於一個「啓動」模塊。或者,您可以以某種方式首先在引導程序中初始化您的「共享」模塊,並在此之後初始化所有其他模塊。 「學術方式」是「模塊依賴」,但現實生活總是比較複雜;)

相關問題