.net – RaisePropertyChanged如何发现属性名称?

前端之家收集整理的这篇文章主要介绍了.net – RaisePropertyChanged如何发现属性名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
NotificationObject中有一个此方法的重载:
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression);

我们在以下方式写入属性的设置:

RaisePropertyChanged(() => PropertyVariable);

它是如何工作的?如何从该Lambda表达式中找到属性名称

解决方法@H_404_12@
表达< TDelegate>表示lambda表达式的抽象语法树.所以你只需要分析这个语法树来找出属性名称
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
{
    var memberExpr = propertyExpression.Body as MemberExpression;
    if (memberExpr == null)
        throw new ArgumentException("propertyExpression should represent access to a member");
    string memberName = memberExpr.Member.Name;
    RaisePropertyChanged(memberName);
}

猜你在找的C#相关文章