Skip to main content

Use Dependency Injection In ActionFilterAttribute

· One min read

Use Dependency Injection In ActionFilterAttribute

public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
...
}
}

[Route("api/[controller]")]
[ApiController]
[MyActionFilter]
public class MyController : ControllerBase
{
...
}

-----------------------------------------------------------------------

public class MyActionFilterAttribute : ActionFilterAttribute
{
readonly AppSettings _appSettings;
readonly ILogger<MyActionFilterAttribute> _logger;

public ClientContextValidationAttribute(IOptions<AppSettings> appSettings, ILogger<MyActionFilterAttribute> logger)
{
_logger = logger;
_appSettings = appSettings.Value;
}

public override void OnActionExecuting(ActionExecutingContext context)
{
...
}
}


Startup.cs

public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<MyActionFilterAttribute>();
}


Controller

[Route("api/[controller]")]
[ApiController]
[ServiceFilter(typeof(MyActionFilterAttribute))]
public class MyController : ControllerBase
{
...
}
ClustrMaps