c# - 如何读取 web api 操作过滤器中的参数属性值

标签 c# api actionfilterattribute

我有一个 API 方法,其中 Id 参数用 CacheType 属性注释

public Object Get([CacheType(CacheTypes.Venue)]int Id)
{
            ....
}

我可以读取ActionFilterAttribute里面参数属性的值吗

public class CacheOutputAttribute : ActionFilterAttribute
{
   public override void OnActionExecuting(HttpActionContext actionContext)
   {
        //read CacheType value
   }
}

最佳答案

要访问当前执行方法的参数集合,您调用

actionContext.ActionDescriptor.GetParameters()

您可以遍历 HttpParameterDescriptor 的集合并找到您需要的参数。您可以通过名称、索引或任何您认为合适的方式来完成。

然后,您可以使用方法GetCustomAttributes<TClass>()HttpParameterDescriptor 类型的对象中定义检查参数是否标记有 TClass 类型的属性.如果您需要属性的实例来检查值,只需从生成的属性集合(如果找到)中获取它即可。

关于c# - 如何读取 web api 操作过滤器中的参数属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510318/

相关文章:

c# - 如何在 C# 中动态转换泛型列表?

c# - 在 C# 中用较小的数组复制/填充大数组的最佳方法是什么?

python - Shopify API Python 使用 Python API 上传多张图片

c# - Autofac 属性注入(inject)在属性上失败

asp.net-mvc-4 - 使用结构图将 SetterProperty 注入(inject)到 Asp.Net MVC ActionFilter

c# - ActionResultFilter 页面未找到错误

c# - 如何设置正确的日期时间格式?

c# - C/C# 中更快的模数?

java - "Redundant"javadoc - 在面向公众的 API 中是否理想?

php - 我的 Web 服务不工作 PHP/MYSQL/JSON