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

发布于 2024-10-17 04:38:02 字数 701 浏览 1 评论 0原文

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

I am using Ninject 1.5 in my MVC project. It works nicely, but since we have Ninject 2, I could upgrade (and additionaly use per request behavior, which didn't work properly in 1.5). Ninject 1.5 had InjectPropertiesWhere function, which is missing in Ninject 2 (at least it was when I tested it some time ago). Is there something similar?

Example of 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");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

失而复得 2024-10-24 04:38:02

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

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

This is not supported this way by Ninject 2. You have 4 Options:

  1. Switch to Constructor injection, which is always the prefered way of injection.
  2. Add the Inject Attribute to your properties (Or another attribute and configure it as the inject attribute)
  3. Use WithProperty("propertyName", ctx => ctx.Kernel.Get<MyType>())
  4. The behavior can be added by writing an activation strategy that injects the configured properties. The configuration which properties shall be injected can be added to the bindings metadata using an extension method.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文