我有一个使用 Ninject 作为 DI 容器的 MCV3 应用程序。
我有一个对象有 2 个构造函数(每个都有 1 个参数)
public MyObject(IDependencyOne dep){}
public MyObject(IDependencyTwo dep){}
如何让 Ninject 根据运行时从 web.config 文件中读取的一些布尔值选择两个构造函数之一?
我有一个使用 Ninject 作为 DI 容器的 MCV3 应用程序。
我有一个对象有 2 个构造函数(每个都有 1 个参数)
public MyObject(IDependencyOne dep){}
public MyObject(IDependencyTwo dep){}
如何让 Ninject 根据运行时从 web.config 文件中读取的一些布尔值选择两个构造函数之一?
从这里,它说:Ninject 没有 XML 配置。
从 XML 中解脱出来
大多数其他 .NET 依赖注入框架都是围绕使用 XML 来声明类型绑定而设计的。Ninject 不是强迫您编写繁琐且容易出错的文本,而是为您提供流畅的界面,让您可以使用成熟的代码连接应用程序的各个部分。这意味着您可以利用 IDE 和编译器的功能,例如代码完成和类型安全。
将 IoC 绑定移入代码并移出 XML 是一种普遍趋势(无论如何,在我认识或关注的人中)。大多数情况下,您可以获得智能感知和运行时错误反馈。
我没有使用它,但有Ninject.Extensions.Xml的候选版本,它允许您在 xml 中设置映射。但是,我通常会回避这样做。还有Ninject.Extensions.Conventions可能是您所追求的。
资源 :
您可以将构造函数选择语法与 Conditional Bindings 一起使用 - 请参阅此相关问题/答案以及Contextual Binding 上的相关 wiki 部分。