【发布时间】:2014-09-04 22:52:42
【问题描述】:
假设我有一个如下所示的操作方法:
[return: Safe]
public IEnumerable<string> Get([Safe] SomeData data)
{
return new string[] { "value1", "value2" };
}
[Safe] 属性是我创建的自定义属性。我想创建一个 ActionFilter,它可以在参数或返回类型上定位 [Safe] 属性。我已经为 OnActionExecuting 覆盖中的参数工作,因为我可以像这样访问我的 [Safe] 属性:
//actionContext is of type HttpActionContext and is a supplied parameter.
foreach (var parm in actionContext.ActionDescriptor.ActionBinding.ParameterBindings)
{
var safeAtts = parm.Descriptor.GetCustomAttributes<SafeAttribute>().ToArray();
}
但是如何检索放置在返回类型上的 [Safe] 属性?
采用这种方法可能会有所探索:
ModelMetadataProvider meta = actionContext.GetMetadataProvider();
但如果这确实有效,尚不清楚如何使其与ModelMetadataProvider 一起工作。
有什么建议吗?
【问题讨论】:
标签: c# reflection asp.net-web-api