有没有办法从Lambda表达式中获取事件名称,就像使用属性一样(从Lambda表达式中检索属性名称)?谢谢。
是的,这就像获取属性名称一样,但您必须在定义事件的类中执行此操作。
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;
}
}
享受吧。
C#的lambda表达式不支持事件,因此无法表示。您必须使用反射。
*Changed
)使用抽象,比如 PropertyDescriptor
,它可以为您映射属性到匹配的事件; (3) 接受字符串(带有一些单元测试)。我认为我们都希望在这里有缺失的 infoof
操作符,但它不存在。我们一直在询问 ... - Marc Gravell