1

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

[EnforceParam("Account")]

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

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

为此,我必须将“方法”属性添加到 OpenRasta 的 ReflectionBasedMethod。

如果不破解 OpenRasta(我在 2.0 顺便说一句),同样可以完成吗?

4

1 回答 1

4

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

var attribute = operation.FindAttribute<EnforceParamAttribute>()

不支持向下转换,并且操作应仅反映操作及其输入,故意。不要沮丧,它中断,并且不能保证您的代码在碰巧使用 IMethod API 的一个版本之后工作,该版本将在某个时候被重写/删除。

于 2011-10-03T11:42:47.227 回答