Dot-Net
RaisePropertyChanged<T> 如何找出屬性名稱?
此方法有一個重載
NotificationObject:-protected void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression);我們在property的setter中這樣寫:
RaisePropertyChanged(() => PropertyVariable);它是如何工作的?它如何從這個 Lambda 表達式中找到屬性名稱?
An
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); }