从lambda表达式中检索事件名称

时间:2010-03-06 10:29:23

标签: c# lambda

有没有办法从Lambda表达式获取事件的名称,如同属性( Retrieving Property name from lambda expression)?

由于

2 个答案:

答案 0 :(得分:6)

是的,这就像获取属性名称一样,但您必须在定义事件的类中执行此操作。

public class Foo
{
    public event EventHandler Bar;

    public string BarName
    {
        get
        {
            return this.GetEventName(() => this.Bar);
        }
    }

    private string GetEventName(Expression<Func<EventHandler>> expression)
    {
        return (expression.Body as MemberExpression).Member.Name;
    }
}

享受。

答案 1 :(得分:4)

没有。 C#lambdas不支持事件,因此无法表示这一点。你必须使用反射。