【发布时间】:2010-03-06 10:29:22
【问题描述】:
有没有办法如何从 Lambda 表达式中获取名称 ov 事件,例如使用属性 ( Retrieving Property name from lambda expression) ?
谢谢
【问题讨论】:
有没有办法如何从 Lambda 表达式中获取名称 ov 事件,例如使用属性 ( Retrieving Property name from lambda expression) ?
谢谢
【问题讨论】:
是的,这就像获取属性名称一样,但必须在定义事件的类中进行。
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 运算符,但它不存在。我们一直在问......