gpt4 book ai didi

.net - RaisePropertyChanged 如何找到属性名称?

转载 作者:行者123 更新时间:2023-12-02 11:57:12 26 4
gpt4 key购买 nike

NotificationObject 中此方法有一个重载:-

protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression);

我们在属性的setter中这样写:

RaisePropertyChanged(() => PropertyVariable);

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

最佳答案

Expression<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);
}

关于.net - RaisePropertyChanged<T> 如何找到属性名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com