下面的静态方法将采用所有整数,并乘以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));
}
}
}
}
您需要实现IActionFilter接口
public class DataConverterFilterAttribute : IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext actionContext)
{
var request = DataConverter.MultiplyByTwo(actionContext.Request);
}
}