C#

CallerMemberName 속성

Superkill 2018. 5. 9. 20:54
반응형

callermember attribute를 사용하면 멤버이름을 string형식인자로 넘기지 않아도 된다.

즉 생략이 가능하다는 이야기다.

명시적으로 멤버 이름을 인자로 넘기지 않기 때문에 멤버 변수 이름이 변경되는 Rename Refactoring 의 경우 그 진가를 발휘한다.


[CallerMemberName] 속성은 INotifyPropertyChanged 인터페이스를 사용하다가
알게 되었는데 MSDN 에서는 메소드를 호출한 부분을 추적하거나 진단할 경우에도 사용한다고 한다.


일단 INotifyPropertyChanged에서는 주로 setter에 사용되는 메소드의 선언부분에
{CallerMemberName] 속성이 사용된다.


아래 링크에서는 INotifyPropertyChanged에서 사용되는 예제와
메소드가 호출된 멤버이름과 파일경로 및 코드라인넘버까지 로그로 남기는 예제가 있다.

https://grenangen.se/node/75