访问OperationInterceptor中的MethodInfo

时间:2011-10-03 11:32:23

标签: openrasta

我创建了一些自定义属性,我将这些属性附加到处理程序中的方法中。自定义属性不仅仅是“标记符”,例如'RequiresAuthenticationAttribute'。一个简化的例子:

[EnforceParam("Account")]

在我的拦截器中,调用EnforceParam注释的方法,我想访问值“Account”。我目前正在为此做的是:

public override bool BeforeExecute(IOperation operation)
{
    ReflectionBasedMethod method = (ReflectionBasedMethod)((MethodBasedOperation)operation).Method;
    MethodInfo methodInfo = method.MethodInfo;

为了实现这一点,我必须将'Method'属性添加到OpenRasta的ReflectionBasedMethod。

可以在不破解OpenRasta的情况下实现同样的目标(我的速度为2.0 btw)?

1 个答案:

答案 0 :(得分:4)

这是错误的问题。您正在寻找的只是:

var attribute = operation.FindAttribute<EnforceParamAttribute>()

不支持向下转换,操作应仅仅是为了反映操作及其输入。不要贬低,中断并且您的代码不能保证超出一个恰好使用IMethod API的版本,这个版本在某些时候会被重写/删除。