我有一个API方法,其中Id参数使用CacheType属性注释
echo '$HELLO$' |awk '{sub(/\$/,"\\&");sub(/\$/,"")}1'
&HELLO
我可以在ActionFilterAttribute
中读取参数属性的值public Object Get([CacheType(CacheTypes.Venue)]int Id)
{
....
}
答案 0 :(得分:3)
要访问当前执行方法的参数集合,请调用
actionContext.ActionDescriptor.GetParameters()
您可以遍历HttpParameterDescriptor
的集合并找到所需的参数。您可以通过名称,索引或任何您认为合适的方式来完成。
然后,您可以使用在GetCustomAttributes<TClass>()
类型的对象中定义的方法HttpParameterDescriptor
来检查参数是否使用类型TClass
的属性进行标记。如果您需要该属性的实例来检查该值,只需从生成的属性集合中获取它(如果找到)。
答案 1 :(得分:2)
获取参数值
actionContext.ActionArguments["id"]
使用具有CacheOutput
属性
actionContext.ActionDescriptor.GetParameters().ToList().ForEach(p =>
{
var cacheOutput = p.GetCustomAttributes<CacheOutputAttribute>();
if (cacheOutput.Any())
{
// do something
}
});