4

我正在尝试访问应用于城堡拦截器中的方法的自定义属性,例如:

[MyCustomAttribute(SomeParam = "attributeValue")]
public virtual MyEntity Entity { get; set; }

使用以下代码:

internal class MyInterceptor : IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        if (invocation.Method.GetCustomAttributes(typeof(MyCustomAttribute), true) != null)
        {
            //Do something
        }
    }
}

调用该方法时拦截器触发正常,但此代码不返回自定义属性。我怎样才能做到这一点?

4

3 回答 3

4

为此尝试Attribute.GetCustomAttribute(...)静态方法。这很奇怪,但这两种方法有时会出于某种奇怪的原因返回不同的结果。

于 2010-03-29T16:01:28.243 回答
3

尝试

private static Attribute getMyCustomAttribute(IInvocation invocation)
{
   var methodInfo = invocation.MethodInvocationTarget;
   if (methodInfo == null)
   {
      methodInfo = invocation.Method;
   }
   return Attribute.GetCustomAttribute(methodInfo, typeof(MyCustomAttribute), true);
}
于 2013-04-09T15:12:33.937 回答
1

我想我已经弄清楚了-这是因为属性和方法之间的差异。触发拦截器的是get_方法,这个没有用父属性的属性修饰。

于 2010-03-29T17:12:49.000 回答