2010-11-22 6 views
1

나는 최근 AOP에 대한 Anders Hejlsberg의 논거에 대해 interesting blog post을 읽었습니다.AOP가 데이터 바인딩에서 어떻게 도움이됩니까?

최초의 안티 - 안티 인수는 데이터 바인딩 언급 ". 가로 지향 프로그래밍 코드의 디버깅 및 계측에 대한 흥미와 본격적인 프로그래밍 분야 아니다"

신화 1.

진실 1. 앤더스는 아마 "안녕하세요, 세계"예제에서 멈췄습니다.

코드 계측은 확실히 AOP의 중요한 사용 사례이며 모든 "시작하기"문서에서 볼 수있는 중요한 기술이지만이 기술을 사용하면 개발자의 작업을 단순화 할 수 있습니다. 생명 응용 프로그램. AOP는 정말 도움이 곳에 불과 몇 실제 시나리오를 인용합니다 : 나는 AOP는 데이터 바인딩 시나리오에서 사용되는 방법을 생각하기 위해 노력하고있어

* Data Binding (INotifyPropertyChanged) 

. 나는 항상 바인딩이 리플렉션에 의존하여 그것이 "마술"이라고 생각했습니다. 바인딩 시나리오에서 필요한 모든 것을 리플렉션을 통해 사용할 수 있다고 확신합니다. AOP가 (약간) 성능 향상에 사용됩니까?

답변

3

그가 언급 한 데이터 바인딩이 아니지만, AOP가 정말 빛을 발할 부분 인 INotifyPropertyChanged (및 유사한) 부분입니다. 클래스가 INotifyPropertyChanged 구현시

현재는, 속성은 다음과 같이 :

private bool _isSomeProperty; 
public bool IsSomeProperty 
{ 
    get{ return _isSomeProperty;} 
    set 
    { 
    if(value != _isSomeProperty) 
    { 
     _isSomeProperty = value; 
     OnNotifyPropertyChanged("IsSomeProperty"); 
    } 
    } 
} 

어디 괜찮은 AOP와, 그들이이

[NotifyOnChange]  
public bool IsSomeProperty {get; set;} 

처럼 보일 수있는 큰 가독성 차이, 특히 때 몇 가지 속성에 대한 setter에는 몇 가지 실제 규칙이 있습니다.

private bool _isSomeProperty; 
public bool IsSomeProperty 
{ 
    get{ return _isSomeProperty;} 
    set 
    { 
    SetAndNotify(x=>x.IsSomeProperty) 
    } 
} 

그리고 심지어는 읽을 수없는 (그리고뿐만 아니라 덜 확대됨입니다)

+0

: 심지어 일반적인 기본 클래스, 식, 반사, 일부 까다로운 구현과

은, 당신이 희망 최선이다 좋은 대답. 나는 WPF에서 많은 것을 코딩하지 않는다. 그래서 나는 데이터 바인딩을 생각할 때 ASP.NET을 생각하며, 한 방향으로 만 읽는다고 생각한다. (반향은 완벽 할 것이다). 감사. –

관련 문제