2016-05-06 3 views
0

У меня есть контроллер с именем HomeControllerWeb API пользовательского атрибута Фильтр с Ninject Dependency Injection

public class HomeController : ApiController 
{  
    [System.Web.Http.HttpGet] 
    public string Index() 
    { 
     //Some logic 
    } 
} 

и класс атрибута с именем Logging

public class Logging : ActionFilterAttribute 
{ 
    private readonly IMyInterface myInterface; 
    public LogResponse(myInterface value) 
    { 
     //Add Validation 
     myInterface = value; 
    } 

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     // some logic 
    } 
} 

Я хочу использовать привязку, но я не знаю, как может Я использую Ninject здесь.

В моей Ninject файл, я попробовал:

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.BindHttpFilter<LogResponse>(FilterScope.Controller) 
     .WithConstructorArgument("Report", ???) // ?? says some object , but what value ? 
} 

Не могли бы вы помочь мне с функцией Ninject

ответ

0

Вы, возможно, потребуется создать дополнительный FilterAttribute, и использовать это в вашем переплета.

См. https://stackoverflow.com/a/6194159/146205 для более подробного примера.

0

1) Имя конструктора кажется отличным от имени класса, может быть, ошибка ввода 2) Не знаком с NInject, но я предполагаю, что у вас есть регистрация типа для IMyInterface; в этом случае используйте контейнер, чтобы получить экземпляр этого объекта и передать его методу WithConstructorArgument (при условии, что он делает то, что говорит его имя). Будьте осторожны с именем param, оно должно быть значением (и там есть другая ошибка в сигнатуре конструктора, это должно быть значение IMyInterface). Надеюсь, что это применимо.

Смежные вопросы