我在我的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/