3

我在我的 MVC 项目中使用 Ninject 1.5。它工作得很好,但是因为我们有 Ninject 2,我可以升级(并且额外使用每个请求行为,这在 1.5 中不能正常工作)。Ninject 1.5 具有InjectPropertiesWhereNinject 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");
4

1 回答 1

6

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

  1. 切换到构造函数注入,这始终是首选的注入方式。
  2. 将注入属性添加到您的属性(或另一个属性并将其配置为注入属性)
  3. 采用WithProperty("propertyName", ctx => ctx.Kernel.Get<MyType>())
  4. 可以通过编写注入配置属性的激活策略来添加行为。可以使用扩展方法将应注入哪些属性的配置添加到绑定元数据中。
于 2011-02-15T10:24:39.030 回答