2011-12-25 66 views
1

我在我的Ninject模块下面的代码:使用Ninject的BindFilter方法从属性注入构造函数参数时避免使用魔法字符串?

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

是否Ninject提供任何替代品使用字符串构造函数参数的名字吗?例如,我宁愿在构造函数中添加Permissions属性,并在绑定语句中引用它(与Ninject的常规绑定机制一样)。是否有这样的可能(或在下一版本的作品中)?

回答

3

随着未来版本中,您可以指定有关像这样:

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

优秀的,不能等待下一个版本。 – devuxer 2011-12-26 23:33:26

相关问题