Ninject模块或组织依赖项的连接

3

我开始尝试使用Ninject,在一个视频教程中,它说以下是如何设置绑定的:

class MyModule : StandardModule {

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

这都很好。

但是,假设您在应用程序中有一百个对象。那就意味着会有一百个绑定。这是正确的吗?

其次,我认为,考虑到这样的应用程序,它可以被分成子系统,例如GUI,数据库,服务等。

然后,您是否会为每个子系统创建自定义模块,这些模块将依次是:

  • GUIModule
  • DatabaseModule
  • ServiceModule
  • ...

对于每个模块,您都需要正确的绑定所需的内容。我这里说得对吗?

最后,这种绑定是否都发生在Main或您的应用程序入口点中?

1个回答

4

然而,假设您有一个应用程序中使用的一百个对象。那意味着这将有一百个绑定。这正确吗?

是的,有一百个注册组件,但不一定要逐个注册。有一个Ninject的约定扩展可以让您扫描程序集并根据某些定义的规则注册类型。以此测试为例。

那么,您是否会为每个子系统创建自定义模块?

同样,并非必须如此。您可能只想在单个约定注册中注册所有存储库(只是举个例子)。

对于每个模块,您都将拥有所需的正确绑定。

与任何“模块”(无论是汇编、类还是应用程序)一样,耦合和内聚的概念在此也适用。最佳实践是保持低耦合(不要过度依赖其他模块)和高内聚(模块内的所有组件必须为实现共同目标而服务)。

最后,这种绑定是否都发生在主函数或应用程序入口点中?

是的,请参见此相关问题

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接