2011-12-25 4 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

関連する問題