2017-02-21 12 views
0

내가 사용 : 액션 필터 - 의존성 주입

using Microsoft.Extensions.DependencyInjection; 

나는 내가 표준 생성자 분사를 작성하려고하지만 내 costructor 매개 변수가있을 때 내가 쓸 필요가 있으므로 다른 서비스에 액세스 할 필요가 새 ActionFilter을 만들려고 다음과 같은 내용이 있습니다.

[OAuthFilter(serviceToInject)] 

조치 필터가 이러한 종류의 매개 변수를 가질 수 없기 때문에 그럴 수 없습니다.

내가해야 할 일? 액션 필터는 생성자를 삽입 할 수 없습니까? 의존성 주입을 통해

[TypeFilter(typeof(OAuthFilter))] 
public class HomeController : Controller 
{ 
} 

이 필터를 인스턴스화하고 얻을 것이다 필요한 모든 구성 요소 :

+0

가능한 중복의 : https://stackoverflow.com/questions/29915192/property- injection-on-attributes – Steven

+0

ASP.NET MVC 또는 ASP.NET 4 용 @Steven, ASP.NET 코어 –

+0

@CamiloTerevinto : 대답은 여전히 ​​동일합니다. 특성을 [passive] (http : // blog.ploeh.dk/2014/06/13/passive-attributes/) 또는 [Humble objects] (http://xunitpatterns.com/Humble%20Object.html). – Steven

답변

1

당신은 TypeFilterAttribute를 사용할 수 있습니다.

[ServiceFilter(typeof(OAuthFilter))] 
public class HomeController : Controller 
{ 
} 

그러나 이것은 당신이 서비스 컬렉션에 필터를 추가해야합니다 : 또 다른 대안은 ServiceFilterAttribute입니다

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddTransient<OAuthFilter>(); 
}