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

时间:2011-12-25 19:22:43

标签: c# asp.net-mvc ninject action-filter

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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