2011-12-15 60 views
7

我在這個網站看周圍的幾件事情:我應該在哪裏定義我的NinjectModule和我的工廠?

  • 最好是在推出來配置我們的容器應用
  • 最好是避免使我們依賴於依賴注入框架庫
  • 建議使用工廠初始化在運行時定義屬性的對象

我使用Ninject。如果我理解這些建議,這是必要的:

  • 我的庫不使用NInject.dll
  • 因此,我NinjectModules必須在我的應用程序的項目中定義
  • 我的工廠(which are created on this principle)必須也可以在我的申請項目中定義,而不是直接在庫中

這似乎很奇怪,特別是對工廠來說。我有很多使用相同庫的項目。所有這些項目是否應該重新定義ninject模塊和工廠?

您認爲如何?

+0

[Fluent IOC配置的最佳位置(當前正在嘗試Ninject)]的可能副本(http://stackoverflow.com/questions/5733591/best-location-for-fluent-ioc-configuration-currently-trying-ininject) – 2011-12-15 12:31:02

回答

1

配置不一定在應用程序程序集中。它也可以放在幾個專門的組件中,只包含一部分配置。但正如你所提到的,它不應該是實現的一部分。如果您在多個項目上共享完全相同的配置,則可以引用現有配置。

對於工廠,您以後可以使用Ninject.Extensions.Factory,這樣您就不必自己實施它們。

1

這在很大程度上取決於你的庫的情況下,我怎麼做到這一點是:

  • 在主項目初始化的引導程序的一切。雖然我在那裏我配置不同的東西bootstrappers的幾個層次(主要是因爲我用我的庫中相同類型的項目,所以它們具有類似配置)

  • 爲了防止這種情況的IoC框架抽象的,我用的是ServiceLocator pattern你可以在你的工廠中使用它。

+0

我讀到ServiceLocator的使用實際上是一種反模式。如果可能,我想避免它。或者工廠可以嗎? – Filimindji 2011-12-16 08:58:42

+1

我認爲這是一種反模式,當你在你的服務中使用它來獲得依賴時,而不是在構造函數或屬性中注入它們時,在你試圖抽象Ioc容器的工廠中(所以你可以使用另一個)。 – 2011-12-16 09:11:50

相關問題