使用 Ninject 的 BindFilter 方法从属性注入构造函数参数时避免使用魔术字符串吗?

发布于 2024-12-23 07:31:28 字数 443 浏览 4 评论 0原文

我的 Ninject 模块中有以下代码:

this.BindFilter<PermitFilter>(FilterScope.Controller, 0)
    .WhenControllerHas<PermitAttribute>()
    .WithConstructorArgumentFromControllerAttribute<PermitAttribute>(
        "permissions",
         attribute => attribute.Permissions);

Ninject 是否提供使用字符串作为构造函数参数名称的替代方法?例如,我宁愿在构造函数上放置一个 Permissions 属性,并在绑定语句中引用它(与 Ninject 的常规绑定机制一样)。这样的事情可能吗(或者正在为下一个版本做准备)?

I have the following code in my Ninject module:

this.BindFilter<PermitFilter>(FilterScope.Controller, 0)
    .WhenControllerHas<PermitAttribute>()
    .WithConstructorArgumentFromControllerAttribute<PermitAttribute>(
        "permissions",
         attribute => attribute.Permissions);

Does Ninject provide any alternatives to using a string for the name of the constructor argument? For example, I would rather put a Permissions attribute on the constructor and refer to it in the binding statement (as with Ninject's regular binding mechanism). Is anything like this possible (or in the works for the next version)?

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

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

发布评论

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

评论(1

兮颜 2024-12-30 07:31:28

在下一个版本中,您可以像这样指定它:

this.BindFilter(
    x => new PermitFilter(
        x.Inject<ISomeDependency>(),
        x.FromControllerAttribute<PermitAttribute>().GetValue(attribute => attribute.Permissions)), 
        FilterScope.Controller, 
        0)
    .WhenActionMethodHas<PermitAttribute>();

With the next release you can specify it about like this:

this.BindFilter(
    x => new PermitFilter(
        x.Inject<ISomeDependency>(),
        x.FromControllerAttribute<PermitAttribute>().GetValue(attribute => attribute.Permissions)), 
        FilterScope.Controller, 
        0)
    .WhenActionMethodHas<PermitAttribute>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文