INotifyPropertyChanged를 사용할 때 좋은 질문에 대한 답이 더 많습니다.TypeDescriptor를 사용하여 INotifyPropertyChanged를 사용할 때 유효한 propertyName을 확인하십시오.
저는이 클래스가 대부분의 사용자 정의 뷰 모델 바인딩 환경에서 사용될 것이라는 의도로 INotifyPropertyChanged를 구현하는 기본 클래스를 만들었습니다.
기본적으로 속성 변경의 이름 (문자열)을 취하는 DispatchPropertyChange 메서드가 있습니다. 이것은 꽤 간단하지만 문자열은 분명히 오류가 발생하기 쉽습니다.
나는이 속성이 디스패치 전에 유효하다는 것을 확인하고 싶지만 이것이 좋은 접근 방법인지 확신 할 수 없습니다. 지금까지 도우미 기능은 이렇게 보입니다.
private void ValidateProperty(string prop)
{
if(TypeDescriptor.GetProperties(this)[prop] == null)
{
//throw error
}
}
나는이 전략이 문제를 늦출 수 있다고 생각합니다. 다른 접근법이나 속성 이름이 유효한지 확인하는 방법이 있습니까?
이 재미있다 ... 나는 강한 입력 – Nicholas
고려하지 않았다 컴파일 타임에 속성 이름 유효성 검사를 할 수있는 무엇 런타임에 propertyExpression 대리자를 분리하는 성능입니까? 강력한 타이핑은 항상 좋지만 ValidateProperty 메소드에서 ConditionalAttribute를 사용하여 릴리스 빌드에서 해제 할 수있는'TypeDescriptor.GetProperties' 검사보다 느린가? –
@ David 개인적으로 벤치마킹 한 적이 없습니다. 그러나 나는 수많은 응용 프로그램에서 강력한 타이핑 접근법을 사용했고 결코 문제가 없었습니다. 내 생각 엔 모델/뷰 모델의 일반적인 풋 프린트로 인해 무시해도 좋을 것 같습니다. –