В Asp.Net Web API 2.x атрибуты не допускают внедрения зависимостей через конструктор, если вы хотите использовать их для отдельных действий.
Вы должны будете использовать анти-шаблон локатора службы через IDependencyResolver
, к которому можно получить доступ через HttpConfiguration
Например
public class AccessLoadApiAttribute : ActionFilterAttribute {
public override void OnActionExecuting(HttpActionContext actionContext) {
//get the resolver via the request context
var resolver = actionContext.RequestContext.Configuration.DependencyResolver;
//use resolver to get dependency
ILoadServiceEntity _loadServiceEntity = (ILoadServiceEntity)resolver.GetService(typeof(ILoadServiceEntity));
var loadId = Convert.ToInt32(actionContext.RequestContext.RouteData.Values["Id"]);
_loadServiceEntity.GetLoadById(loadId);
base.OnActionExecuting(actionContext);
}
}
Атрибут теперь можно использовать по мере необходимости
[AccessLoadApi]
[HttpGet]
public IHttpActionResult SomeGetAction() {
return Ok();
}