2014-02-08 3 views
0

값을 캐시하려는 클래스의 속성 (이전 값)이 있습니다. 개체 자체가 변경 내용을 추적하지만 간단한 특성으로 추적하려는 속성을 표시 할 수 있기를 원합니다. 속성 당 수동 코드없이 속성의 변경 사항을 모니터링하려면 어떻게합니까?속성을 통해 속성을 모니터링하는 우아한 방법은 무엇입니까?

+0

[Unity 차단] (http://msdn.microsoft.com/en-us/library/dn178466%28v=pandp.30%29.aspx) 옵션 - 모든 인스턴스를 랩핑하고 전후에 정보 캡처 전화. 애트리뷰트와 관련이 없으므로 답이 아닙니다. (애트리뷰트를 통해 모니터 할 때 어떤 의미인지는 모르겠다.) ... –

+0

@AlexeiLevenkov 내가 원한다. 특성이 속성으로 표시 될 때 변경된 속성이 다른 하위 시스템에 의해 자동으로 모니터되는 시스템을 작성합니다. –

+0

Answer - sample 객체와 샘플 생성과 같은 코드를 추가하는 방법을 추가 할 수 있습니다. 이미'INotifyPropertyChanged'를 유선처럼 사용하고 있다면주의하십시오. –

답변

0

일반 프록시 패턴을 사용하십시오. 프록시 생성기가 많이 있지만 리모팅으로 제공되는 실제/투명한 프록시를 사용할 수 있습니다.

속성 호출을 가로 채고 수행하려는 작업을 수행합니다.

0

당신은 a good white paper can be found here too

.NET에서 가장 일반적인 AOP 도구이며, 확장하거나 모니터링, 캐싱, 검증, 또는 AOP (Aspect Oriented Programming)을 고려하는 것이 좋습니다 로깅과 같은 뭔가 속성의 동작을 변경하는 속성을 원하는 경우 Post Sharp.

솔루션과 Visual Studio에 통합 된 해당 라이브러리/도구를 사용하면 aspect로 인식하는 특정 속성을 찾고 대상 속성, 메소드 및 속성에 대해 컴파일시 (또는 런타임, 일부 요인에 따라 다름) 클래스 또는 심지어 전체 어셈블리.

location interception aspect은 (실행 전, 실행 후 또는 오류가 발생할 때) 대상 실행을 가로 채고 이러한 차단이 발생할 때 실행될 코드를 작성할 수 있으며 이에 대한 메타 데이터가 제공됩니다. 대상이 차단되거나 (예 : PropertyInfo) 현재 차단 된 개체의 인스턴스 또는 발생한 오류.

포스트 샤프로 패키징 된 미리 정의 된 요소 (속성)가 있으며 바로 사용할 수 있습니다. 또는 다른 동작으로 자신 만의 특성 (속성)을 만들 수 있습니다.

관련 문제