C#에서 Property의 이름을 string으로 반환하는 방법,
본 글은 How to get C# property names without magic string-static relfection 이라는 글을 참고로 한 것이다.
C#에서는 Reflection이라는 아주 재미있는 녀석이 존재한다. Reflection은 클래스를 캡슐화 하는 Type이라는 객체 타입을 제공함으로서 다양한 기능들을 제공한다. 이런 많은 기능들을 다 언급할 수는 없지만 (응용 분야가 무궁무진한 것 같다.) 그 중에서도 이번에는 Property를 사용할 때 Property의 이름(string)이 필요한 경우, 그 값을 구하는 방법이다.
개인적으로는 NHibernate를 사용할 때 Criteria 조건을 설정할 때, Property의 이름이 필요했는데 이를 직접 적지 않고 코드상으로 구현하고 싶어 찾게 된 것이다.
이 때는 LINQ가 사용된다. 솔직히 LINQ에 대해서 공부를 한 적이 없어서 정확하게 모른다. 하지만 아래와 같은 코드로 Property의 이름을 가져올 수 있다.
간단하게 테스트를 위한 코드만 작성하였다. 위에서 보는 것과 같이 strPropertyName의 값에 정상적으로 TitleName 라는 값을 받는 것을 확인 할 수 있었다. 매우 신기하다. LINQ의 Expression에 대해서 공부를 해야지 위의 코드가 모두 이해될 것이지만 대충 이해는 갈 것이다.
위의 코드를 응용하여 쉽게 C#에서 Property의 이름을 가져올 수 있다. 단순히 클래스의 전체 Property의 이름 등을 가져올 때는 Reflection을 이용하는 것이 더 편리할 것이다.









