2014-12-04 7 views
0

한 가지 자동 get/set 속성을 가진 일반 C# 클래스가 있다고 가정 해 보겠습니다.set 속성을 호출 할 때 이벤트를 평가할 수 있습니까?

public class Entity 
{ 
     public String SomeProperty {get;set;} 

} 

SomeProperty의 set 메서드를 호출 할 때 발생하는 이벤트가 있으며 평가할 수 있습니까?

어떤 식 으로든 가능한이 같은 것입니다, 아마 반사?

의사 코드, NO REAL CODE : 내가 아는

Entity e = new Entity(); 
e.SomeProperty.SetterCalled += OnSetterCalled; 

private void OnSetterCalled(Sender propertyinfo) 
{ 
    propertyinfo pi = propertyinfo; 
    Console.Write (pi.Name); 
} 

, 내가 CallerMember를 사용할 수 있지만 그때가 있었다 자동 속성을 변경하십시오.

+0

당신은 실제 게터/세터 메소드를 추가 할 수 있습니다 : 여기

INotifyPropertyChanged 

은 좋은 연습입니다. 속성에 액세스 할 때마다 호출됩니다. 정확하게 설계된 것입니다. –

+1

나는 두려운, 어려운 구현 방법을 생각할 수 있습니다. 그러나 현실적으로 말하면 어떨까요? 아니요. setter는 필드에 간단한 쓰기 만하도록 최적화되어있을 것입니다. 그렇지 않은 경우에도 메소드 호출을 트랩 할 수있는 기본 제공 메커니즘이 없습니다. 알림을 받으려면 이러한 이벤트에 일반적으로 많이 사용되는 기술 중 하나를 통해 구현하십시오. –

+0

@Ken White : 정보를 찾을 수있는 힌트 또는 URL을 주시겠습니까? 자동으로 get/set 속성을 구현할 수 있습니까? – Michael

답변

3

아니요, 이렇게 할 방법이 없습니다.

_backingVariable = value; 

할당은 본질적으로 어떤 메소드를 호출하지 않습니다

세터는 바로 이것이다. 그대로, 자동 속성을 사용하는 속성 집합 중에 이벤트를 발생시킬 수있는 방법이 없습니다. https://stackoverflow.com/a/18002490/1783619

을하지만 그렇지 않은 경우,이 작업을 수행 할 수있는 방법이 없습니다 :

다음에 설명 된 기술 같은 것을 사용하여 컴파일 타임에 코드를 변경할 수 있습니다. 나는에보고 추천 할 것입니다