加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:18:18 所属栏目:百科 来源:网络整理
导读:NotificationObject中有一个此方法的重载: protected void RaisePropertyChangedT(ExpressionFuncT propertyExpression); 我们在以下方式写入属性的设置: RaisePropertyChanged(() = PropertyVariable); 它是如何工作的?如何从该Lambda表达式中找到属性名
NotificationObject中有一个此方法的重载:
protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression);

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

RaisePropertyChanged(() => PropertyVariable);

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

解决方法

表达< 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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读