从c#事件中获取自定义属性

时间:2014-05-22 14:07:03

标签: c# events custom-attributes

是否可以从事件中获取自定义属性?

public class TestClass
{
    [Test()]
    public event EventHandler TestEvent;

    public void RunTest()
    {
        //Get attributes from TestEvent
    }
}

[AttributeUsage(AttributeTargets.Event)]
public class TestAttribute : Attribute
{

}

我尝试了以下内容,但两者都没有结果:

Console.WriteLine("Attr: {0}", Attribute.GetCustomAttribute(TestEvent.GetMethodInfo(), typeof (TestAttribute)) != null);
Console.WriteLine("Attr: {0}", Attribute.GetCustomAttribute(TestEvent.Method, typeof (TestAttribute)) != null);

1 个答案:

答案 0 :(得分:1)

因为事件是一种特殊的委托,所以你引用的.Method指定事件处理程序,而不是事件本身,因此不是附加到事件的属性。相反,您可以使用GetEvent方法

通过类本身的反射来引用事件
Console.WriteLine("Attr: {0}",
    Attribute.GetCustomAttribute(
        typeof(TestClass).GetEvent("TestEvent"),    // This line looks up the reflection of your event
        typeof (TestAttribute))
    != null);