如何在 .net core 的属性内同时依赖注入和发送值?

How can I both dependency injection and send value inside the attribute in .net core?

我想解密请求并按属性加密结果。为此,我在下面编写了 CheckFilter 属性。但是我需要进行依赖注入才能在其中使用 IHashService 服务。我还想发送一个带有属性的值,因为它在 Get 方法中使用。但是我不知道该怎么做。

 public class CheckFilter : Attribute, IResourceFilter
    {
        private readonly IHashService _hashService;

        public CheckFilter(IHashService hashService)
        {
            _hashService = hashService;
        }

        public void OnResourceExecuting(ResourceExecutingContext context)

        {
            //Decrypt 
        }

        public void OnResourceExecuted(ResourceExecutedContext context)
        {
            //Encrypt
        }
    }
 [HttpGet]
 [CheckFilter("test")]
 public string Get(string request)
 {
      return "hello";
 }

如果您想在过滤器属性中获取服务,您可以使用服务位置通过使用 RequestServices.GetService.

来解析来自 built-in IoC 容器的组件

更多详情,您可以参考以下代码:

public class ThrottleFilterAttribute : Attribute, IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        var cache = context.HttpContext.RequestServices.GetService<IDistributedCache>();
        ...
    }
    ...
}