Ninject 2:是否有相当于1.5的InjectPropertiesWhere?

Luk*_*Led 3 c# dependency-injection ninject ninject-2

我在我的MVC项目中使用Ninject 1.5.它运行良好,但由于我们有Ninject 2,我可以升级(并且另外使用每个请求行为,这在1.5中无法正常工作).Ninject 1.5具有InjectPropertiesWhere功能,在Ninject 2中缺失(至少在我前一段时间测试它时).有类似的东西吗?

示例InjectPropertiesWhere:

return Bind<IUserService>().To<UserService>()
    .InjectPropertiesWhere(p => p.Name.EndsWith("Repository"))
    .InjectPropertiesWhere(p => p.Name.EndsWith("Service"))
    .InjectPropertiesWhere(p => p.Name == "ApplicationCache")
    .InjectPropertiesWhere(p => p.Name == "CurrentPrincipal")
    .InjectPropertiesWhere(p => p.Name == "CTEmailSender")
    .InjectPropertiesWhere(p => p.Name == "CTSettings");
Run Code Online (Sandbox Code Playgroud)

Rem*_*oor 6

Ninject 2不支持这种方式.您有4个选项:

  1. 切换到构造函数注入,这始终是首选的注入方式.
  2. 将Inject属性添加到属性(或另一个属性并将其配置为inject属性)
  3. 使用 WithProperty("propertyName", ctx => ctx.Kernel.Get<MyType>())
  4. 可以通过编写注入已配置属性的激活策略来添加该行为.可以使用扩展方法将要注入的属性的配置添加到绑定元数据中.