2011-12-15 59 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

相关问题