C#:如何在API请求对象上应用动作过滤器?

问题描述 投票:0回答:1

下面的静态方法将采用所有整数,并乘以2。

如何将其设置为API Action Filter,该API会在开始时拦截所有API请求?并将静态方法应用于请求对象(PurchaseRequest)。尝试在C#中找到语法来执行此操作。

错误CS0115'RequestDateTimeConverterFilterAttribute.OnActionExecuting(ActionExecutingContext)':找不到适合的方法来覆盖

过滤器属性(需要找出并解决编译错误)?:

public class DataConverterFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext actionContext)
    {
        var request = DataConverter.MultiplyByTwo(actionContext.Request);
    }
}

API:想要如下申请

[DataConverterFilterAttribute]
public ActionResult<PurchaseResponse> PurchaseService(PurchaseRequest)

静态方法示例

public static class DataConverter()
{
    public static void MultiplyByTwo(object test)
    {
       var type = test.GetType();

       foreach (PropertyInfo property in type.GetProperties())
       {
           if (property.PropertyType == typeof(int) && 
               property.GetValue(test) is int i)
           { 
               property.SetValue(test, i * 2);
           }
           else if (property.PropertyType.IsClass && property.PropertyType != typeof(string))
           {
               MultiplyByTwo(property.GetValue(test));
           }
        }
    }
}
c# .net .net-core action-filter
1个回答
0
投票

您需要实现IActionFilter接口

public class DataConverterFilterAttribute : IActionFilter
{
   public override void OnActionExecuting(ActionExecutingContext actionContext)
   {
    var request = DataConverter.MultiplyByTwo(actionContext.Request);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.