2013-10-29 4 views
0

속성 값이 변경되면 PropertyChanged를 보내는 여러 클래스가 있습니다. INotifyPropertyChanged에서 파생되는 기본 클래스를 가지며 PropertyChanged 이벤트와 OnPropertyChanged 메서드를 모두 구현합니다.몇 가지 유사한 속성을 리팩토링 할 수 있습니까?

다른 클래스는이 기본 클래스에서 파생 된 다음 모든 속성이 동일한 패턴을 따릅니다. 값을 보유하는 클래스 변수와이 변수를 설정하고 설정자의 OnPropertyChanged를 호출하여이 변수를 읽거나 설정하는 속성이 있습니다.

private int number = 42; 
public int Number 
{ 
    get { return number; } 
    set { number = value; OnPropertyChanged("Number"); } 
} 

이 코드는 어떻게 든 각 속성에 대한 라인의 수를 감소시키기 위해 리팩토링 할 수 있다면 너무 궁금하고 표시하기 시작합니다. 아니면이 6 줄의 코드를 줄이려고 시도하는 것이 과연 과연 (+3 줄의 주석 사양)?

+1

사실 패턴의 "올바른"구현에서 선이 누락되었습니다. 완전한 구현은'if (number == value) return;'을 포함합니다. 이제 그건 방해가 됐습니다. 왜 신경 쓰시죠? 이 코드는 빠르며 반쯤은 괜찮은 IDE에서 한 줄로 줄일 수 있습니다. 삶과 함께 나아가보다 중요한 무엇인가에 대해 걱정하십시오. –

답변

0

주위에있는 속성 변경된 알림을 삽입하기위한 빌드 타임 도구를 살펴보고 싶지만, 빠른 Google이 https://github.com/Fody/PropertyChanged으로 표시되었지만 내 회사의 프로젝트에서 본 것은 아닙니다. 내 머리 꼭대기에서 나는 그들이 사용한 것을 다시 생각할 수 없다.

+0

이것은 Visual Studio 전용입니다. 불행히도 저는 그것과 Xamarin Studio (Mono)를 IDE로 사용합니다. 아마 당신이 제안한 것처럼 코드를 붕괴하고 내 삶으로 이동해야합니다. : P –

+0

@ ChristofferBrodd-Reijer 필자는 .csproj 파일에 물건을 주입한다고 생각합니다 (너무 깊이 확인하지 않은 것 같습니다). msbuild를 사용하여 빌드를 실행하는 IDE를 사용하는 한, 가능성이 있습니다. 두 가지 모두에서 제공하는 IDE 통합을 얻으려면 Visual Studio를 사용해야합니다. –

관련 문제