从Castle Windsor拦截器获取方法的自定义属性

时间:2015-07-20 15:15:59

标签: interceptor castle-dynamicproxy castle-windsor-3

我正在尝试访问应用于城堡拦截器中的方法的自定义属性,但方法Attribute.GetCustomAttribute()返回null。

public class MyIntecept : Castle.DynamicProxy.IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
       // myAttr is null. 
       var myAttr = (MyAttribute)Attribute.GetCustomAttribute(
            invocation.Method, typeof(MyAttribute));   
    }
}

[AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = true)]
public class MyAttribute : Attribute
{
    readonly string _value;

    public MyAttribute(string value)
    {
        this._value = value;
    }

    public string Value
    {
        get { return this._value; }
    }
}

public interface IMyInterface
{
    void Do();
}

public class MyClass : IMyInterface
{
    [MyAttribute("MyValue")]
    public void Do()
    {
        Console.WriteLine("Do");
    }
}

我怎样才能获得'MyAttribute'?

P.S。我正在使用Castle.Core 3.3.3

1 个答案:

答案 0 :(得分:0)

将属性“MyAttribute”放在接口内的方法上,而不是在类