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
{
...
}
