Избегать магической строки при введении аргумента конструктора из атрибута с помощью метода BindFilter от Ninject? - PullRequest
1 голос
/ 25 декабря 2011

В моем модуле Ninject есть следующий код:

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

Предоставляет ли Ninject какие-либо альтернативы использованию строки для имени аргумента конструктора? Например, я бы предпочел поместить атрибут Permissions в конструктор и ссылаться на него в операторе связывания (как в обычном механизме связывания Ninject). Возможно ли что-нибудь подобное (или в работах для следующей версии)?

1 Ответ

3 голосов
/ 27 декабря 2011

В следующем выпуске вы можете указать его примерно так:

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