你如何组织你的NInject模块?

时间:2009-11-09 05:11:30

标签: module ninject

NInject的模块架构似乎很有用,但我担心它会变得有点混乱。

您如何组织模块?你把它们放在哪个组件中,你如何决定哪个模块的接线?

2 个答案:

答案 0 :(得分:7)

每个子系统都有一个模块。当然,保证分类为“子系统”的定义取决于......

在某些情况下,某些绑定的责任会被推升到更高的级别,因为较低级别的子系统/组件无法做出最终的权威决策 - 在某些情况下,这可以通过将参数传递到模块。

答案 1 :(得分:2)

使用NInject几年后回复我自己的帖子。

以下是我使用书店作为示例组织NInjectModules的方法:

  • BookStoreSolution
    • Domain.csproj
    • Services.csproj
      • CustomerServicesInjectionModule.cs
      • PaymentProcessingInjectionModule.cs
    • DataAccess.csproj
      • CustomerDatabaseInjectionModule.cs
      • BookDatabaseInjectionModule.cs
    • CustomSecurityFramework.csproj
      • CustomSecurityFrameworkInjectionModule.cs
    • PublicWebsite.csproj
      • PublicWebsiteInjectionModule.cs
    • Intranet.csproj
      • IntranetInjectionModule.cs

这就是说系统中的每个项目都预先打包了一个或多个NInject模块,这些模块知道如何为该项目的类设置绑定。

大多数情况下,单个应用程序不希望对项目提供的默认注入模块进行重大更改。例如,如果我正在创建一个需要导入DataAccess项目的小WinForm应用程序,通常我也希望拥有所有项目的Repository<>绑定到其关联的IRepository的类<>接口

同时,没有任何东西迫使个别应用程序使用特定的注射模块。应用程序可以创建自己的注入模块,并忽略它正在导入的项目提供的默认模块。通过这种方式,系统仍然保持灵活性和分离性。