ETC/Tip

Tip :: What is the Reflection? (리플렉션 이란?)

VallistA2015. 5. 28. 15:48

수많은 사람들이 리플렉션에 대해 주고받고, C++ / C#등에 리플렉션이 있니 없니 해서 궁금한 사람들이 있을 것이다.

물론 나 역시 얼마전까지 (몇년이지만.) 리플렉션에 대해서 정확한 뜻은 모르고 몸이 익혀서 썻던 기억이 있다.

 

하지만 리플렉션이 뭔지 제대로 알아야 적절한 곳에서 사용할 것 아닌가?

그러므로 이번엔 리플렉션에 대해서 알아보도록 하겠다.

 

경우

 

자. 먼저 우리가 이러한 경우가 존재할 것이다.

어떤 객체에 대한 메모리만 알고 있어서 그 객체에 대한 형(type)을 모를때 우리는 그 객체에 대해서 캐스팅을 어떻게 해야 하는가? 에 대해서 많은 고민을 했을 것인데, 이러한 경우에 우리는 리플렉션을 사용 할 수 있다.

리플렉션 (Reflection)의 뜻이 무엇인가? 바로 반대 라는 뜻인데 말 그대로 메모리의 반대되는 곳에 있는 것을 참조하라는 뜻과 같다.

 

리플렉션 : 객체를 통해 클래스 정보를 분석해 내는 프로그래밍 기법

 

어떻게

물론 이러한 경우에 리플렉션을 써야 한다 라는 것을 알았는데 어떻게 리플렉션을 구현을 했는가에 대해서 궁금하지 않은가? 바로 그 물음에 이렇게 답해줄 수 있다.

 

형식메타데이터 그리고 Type 클래스

 

어셈블리는 기본적으로 형식 메타데이터를 가지고 있으며 클래스에 대한 형의 정보를 가지고 있기 때문에 어셈블리는 프로그램이 동작할 때 CLR로 로딩되었다면 CLR 메모리 내에 형에 관한 정보를 가져올 수 있다.

 

어셈블리는 프로그램이 동작을 하게 될 경우 CLR로 로딩될 수 잇기 때문에 로딩 된다면 메모리에 존재한다.

 

형에 대한 정보를 관리하기 위한 클래스가 Type 클래스 인데 Type 클래스는 리플렉션에서 핵심 클래스라고 할 수 있지만 Type 클래스는 리플렉션에만 쓰이는게 아닌, 전 방향에서 쓰인다.

댓글

댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 14

Total : 417,259

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘