리플렉션
리플랙션은 객체를 X-ray 사진처럼 객체의 형식 정보를 들여다보는 기능입니다. 이 기능을 이용하면 우리는 프로그램 실행 중에 객체의 형식 이름부터 프로퍼티 목록, 메소드 목록, 필드, 이벤트 목록까지 모두 열어볼 수 있습니다. 형식의 이름만 있다면 동적으로 인스턴스를 만들 수도 있고, 그 인스턴스의 메소드를 호출할 수도 있습니다. 심지어 새로운 데이터 형식을 동적으로 만들 수 있습니다. 이렇듯 런타임에 형식 정보를 다룰 수 있게하는 리플렉션은 programmer에게 한층 더 강력한 표현력을 선사합니다.
Object.GetType() 메소드와 Type 클래스
Object는 모든 데이터 형식의 조상입니다. 이 말은 즉 모든 데이터 형식은 Object 형식이 갖고 있는 다음의 메소드를 물려받아 갖고 있다는 뜻입니다.
-
Equals()
-
GetHashCode()
-
GetType()
-
ReferenceEquals()
-
ToString()
위 5개 메소드 중에 GetType()은 객체의 형식 정보를 반환하는 기능을 가지고 있다. 모든 데이터 형식이 GetType() 메소드를 갖고 있기 때문에 우리는 어떤 객체에 대해서도 이 메소드를 호출해서 그 객체의 형식 정보를 얻어 낼 수 있습니다.
GetType() 메소드는 Type 형식의 결과를 반환합니다. Type 형식은 .NET에서 사용되는 데이터 형식의 모든 정보를 담고 있습니다. 형식 이름, 소속되어 있는 어셈블리 이름, 프로퍼티 목록, 메소드 목록, 필드 목록, 이벤트 목록, 심지어는 이 형식이 상속하고 있는 인터페이스의 목록까지도 갖고 있습니다.
'Programming > C#' 카테고리의 다른 글
c# 17 : Thread(스레드) (0) | 2020.06.17 |
---|---|
C# 16 : File(파일) (0) | 2020.06.17 |
C# 14 : 람다식 (0) | 2020.06.15 |
C#_13 : WinForm으로 만드는 사용자 인터페이스1 (0) | 2020.06.12 |
c#_12 : LINQ , JOIN (0) | 2020.06.12 |