Я пытаюсь получить доступ к следующей службе в ActionFilterAttribute.
IFooService Служба
public interface IFooService<T>
{
List<T> GetFoos { get; set; }
}
Реализация * FooService **
public class FooService : IFooService<int>
{
public List<int> GetFoos()
{
//do something interesting here.
return new List<int>();
}
}
Указанный выше сервис зарегистрирован в контейнере зависимостей aspnetcore как:
services.AddScoped<IFooService<int>, FooService>();
Я хочу использовать IFooService внутри моего атрибута.Однако на уровне атрибута я не знаю параметр типа.
возможно ли найти вышеуказанный сервис внутри ActionFilterAttribute, не зная параметра типа?Я хочу иметь возможность вызывать метод GetFoos только на интерфейсе.
// вот моя попытка.
public class FooActionFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext context)
{
//error here generic service require 1 argument. But i don't know how to pass this argument..
var foo = (IFooService) context.HttpContext.RequestServices.GetService(typeof(IFooService<>));
}
}