2010-12-10 1 views
1

이 사실을 알고 있어야하며 생각했던 것 같습니다. 기본 뷰 모델 클래스가 있지만 여러 속성이 있지만 모두 자동 getters 및 setters를 사용하므로 물론 잘 작동하지만 이벤트 (프리즘을 사용하고 있습니다)를 브로드 캐스팅해야합니다. 이렇게. 나는 그것에서 파생 된 클래스에서 IsValid를 할당 할 때기본 클래스의 속성에 대한 질문이 있으 십니다.

protected bool isValid; 
public bool IsValid 
{ 
    get { return isValid; } 
    set 
    { 
    isValid = true; 
    this.EventAggregator.GetEvent<ViewModelValidEvent>().Publish(isValid); 
    } 
} 

내가 할 문제는 -이 읽기 전용하는 컴파일러 오류가 말한다 내가 보호 생각한 것은 ... 내가 해결하기 위해해야 ​​할 일을했다 그것은하지 않았다.

또한 RaisePropertyChanged를 호출하기 위해 setter가 필요한 경우이 모든 개인 변수를 선언해야합니다. 더 좋은 방법이 있습니까?

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 감사!!!

+0

Jeff Atwood의 편집 및 Jon Skeet의 답변 :) 증명 조명은 같은 장소에서 두 번 칠 수 있습니다. –

답변

3

isValid을 (컴파일러가 알지 못하는) 파생 클래스의 인스턴스 또는 파생 클래스의 하위 클래스로 사용하려고하지 않는 것으로 의심됩니다. protected에는 이와 같이 비교적 미세한 의미가 있습니다.

개인적으로 필드를 비공개로 유지하고 다른 클래스 (파생 클래스 포함)의 속성을 사용하는 것이 좋습니다.

속성을 구현하는 더 간단한 방법은 - 실제로는 없다고 생각합니다. 래퍼 유형을 가질 수도 있지만 래퍼 유형의 인스턴스를 보유 할 변수를 만들고 변수에 대한 프록시를 가져 오거나 설정하는 접근자를 만들어야합니다.

+0

쿨, 존 스켓으로부터 답변을 얻었습니다 ... – Kenn