리플렉션, 구성 요소 모델 유형 설명자, 표현식 트리 및 애스펙트를 포함하여 다양한 방법으로이 작업을 수행했으나 아래 코드가 .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