我已经看到了这样做的各种方法,包括反射,组件模型类型描述符,表达式树和方面,但我仍不确定下面的代码是否使用.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