12

NInject 的模块架构似乎很有用,但我担心它会变得一团糟。

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

4

2 回答 2

7

每个子系统都有一个模块。当然,什么值得归类为“子系统”的定义取决于……

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

于 2009-11-09T08:52:01.280 回答
2

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

以下是我组织 NInjectModules 的方式,以书店为例:

  • 书店解决方案
    • 域.csproj
    • 服务.csproj
      • CustomerServicesInjectionModule.cs
      • PaymentProcessingInjectionModule.cs
    • 数据访问.csproj
      • CustomerDatabaseInjectionModule.cs
      • BookDatabaseInjectionModule.cs
    • CustomSecurityFramework.csproj
      • CustomSecurityFrameworkInjectionModule.cs
    • 公共网站.csproj
      • PublicWebsiteInjectionModule.cs
    • 内网.csproj
      • IntranetInjectionModule.cs

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

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

同时,没有任何东西强迫单个应用程序使用特定的注入模块。应用程序可以创建自己的注入模块并忽略它正在导入的项目提供的默认模块。这样,系统仍然保持灵活和解耦。

于 2011-09-23T01:53:10.337 回答