我已經看到了這樣做的各種方法,包括反射,組件模型類型描述符,表達式樹和方面,但我仍不確定下面的代碼是否使用.Net實現了以下所有目標4.0或更高版本:獲取PropertyInfo名稱和值
- 類型安全,重構友好(沒有魔法字符串),並通過多次調用
- 可讀
- 最大限度地提高性能提供一個屬性
- 的名稱提供的屬性值
代碼如何改進?
protected void NotifyOfPropertyChanging<TProperty>(Expression<Func<TProperty>> property) {
var memberExpression = (MemberExpression)property.Body;
var prop = (PropertyInfo) memberExpression.Member;
var propertyName = prop.Name;
var value = prop.GetValue(this, null);
// fire INPC using propertyName
// use value and name to do IsDirty checking
}
用於IsDirty檢查;如果該值不同於緩存值快照,則比我的對象IsDirty。乾杯 – Berryl