有没有办法从Lambda表达式获取事件的名称,如同属性( Retrieving Property name from lambda expression)?
由于
答案 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不支持事件,因此无法表示这一点。你必须使用反射。