我在我的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");

最佳答案

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


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

关于c# - Ninject 2:在哪里等于1.5的InjectPropertiesWhere?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4998992/

10-09 14:11