Ninject模块或组织连接依赖

时间:2010-02-23 21:06:23

标签: c# ioc-container ninject

我已经开始使用Ninject,并从截屏视频中说明以下是如何设置绑定:

class MyModule : StandardModule {

    public override void Load() {
        Bind<IInterface>().To<ConcreteType>();
        // More bindings here...
    }
}

这一切都非常好。

但是假设您在应用程序中使用了一百个对象。这意味着这将有一百个绑定。这是对的吗?

其次,我认为在给定这样的应用程序的情况下,它可能会分为GUI,数据库,服务等子系统。

然后,您是否会为每个子系统创建一个自定义模块,而后者将是:

  • GUIModule
  • DatabaseModule
  • ServiceModule
  • ...

对于每个模块,您都拥有所需的正确绑定。我在右边的页面上吗?

最后这个绑定会发生在Main还是应用程序的入口点?

1 个答案:

答案 0 :(得分:4)

  

但是假设你有一百个   应用程序中使用的对象。那   意味着这将有一百个   绑定。这是对的吗?

一百个注册组件,是的,但不一定是逐个注册的。有一个Convention extension for Ninject允许您根据一些已定义的规则扫描程序集和注册类型。请参阅this test作为示例。

  

然后你会创建一个自定义模块吗?   对于每个子系统

同样,不一定。您可能只想在单个约定注册中注册所有存储库(仅用于命名)。

  

对于每个模块,你都有正确的   他们需要的绑定。

与任何“模块”(无论是汇编,类,应用程序)一样,coupling and cohesion的概念也适用于此。最好的做法是保持低耦合(不要太依赖其他模块)和高内聚(模块中的所有组件必须达到共同目标)

  

最后这种绑定都会发生   在Main或您的入口点   应用

是的,请参阅this related question