2016-05-06 11 views
0

Ich habe einen Controller HomeControllerWeb API Attribut Benutzerdefinierte Filter mit Ninject Dependency Injection

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

und einen Attributklasse mit dem Namen genannt 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 
    } 
} 

Ich möchte die Bindung verwenden, aber ich weiß nicht, wie kann Ich benutze Ninject hier.

In meiner Ninject Datei, habe ich versucht:

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

Könnten Sie mit Ninject Funktion

eine zusätzliche FilterAttribute, und verwenden Sie diese in Ihre Bindung zu schaffen, helfen Sie mir bitte

Antwort

0

1) Der Name des Konstruktors scheint anders als der Klassenname, vielleicht ein Tippfehler 2) Nicht vertraut mit NInject, aber ich nehme an, Sie haben eine Typregistrierung für IMyInterface; Verwenden Sie in diesem Fall den Container, um eine Instanz davon zu erhalten, und übergeben Sie sie an die WithConstructorArgument-Methode (vorausgesetzt, sie tut, was der Name sagt). Vorsicht mit dem Parameternamen, sollte es Wert sein (und dort ist ein anderer Fehler genau dort, in der Konstruktorsignatur sollte es IMyInterface Wert sein). Hoffe es gilt.

Verwandte Themen