리플렉션 Reflection
실행 중(런 타임)에 클래스나 객체의 타입 정보를 조사하는 기능, 리플렉션을 사용하여 형식의 인스턴스를 동적으로 만들거나, 형식을 기존 개체에 바인딩하거나, 기존 개체에서 형식을 가져오고 해당 메서드와 속성을 액세스 할 수 있다.(형식 이름, 포로퍼티, 메소드, 필드, 이벤트 목록을 모두 볼수 있고, 해당 메소드를 호출하거나 필드, 프로퍼티에 접근하는 것도 가능하 다는 것임)
타입 정보는 보통 컴파일 중에만 사용되며 컴파일러에 의해 기계어로 바뀌고 나면 사라지는 것이 일반적이다 하지만 C#은 컴파일된 결과 코드 뿐만 아니라 타입에 대한 메타 데이터를 실행 파일에 같이 기록해 놓기 떄문에 실행중에도 정보를 조사할 수 있다.
접근방법
지정된 이름으로 접근
1) Type t = Type.GetType("Test");
클래스 타입으로 접근
2) Type t = tyoeof("Test");
객체로 접근
3) Type t = Test.GetType()
프로그램의 metadata에 접근할 수 있도록 해주는 이 클래스는 System.Refelection namespace에 정의 해 주어야한다.
해당 메서드와 멤버변수들을 불러 올수 있다.
학습 참고
1) http://www.csharpstudy.com/Practical/Prac-reflection.aspx
2) https://hsj0511.tistory.com/350
3) https://hongjinhyeon.tistory.com/86
'프로그래밍언어 > C#' 카테고리의 다른 글
C#) struct와 class의 차이점 구조체와 클래스 (0) | 2019.03.01 |
---|---|
C#) 쓰레드(Thread), 프로세스 (0) | 2019.02.22 |
C#) Action과 Func (람다식) (0) | 2019.02.16 |
C#) 캐스팅/ 암시적형변환 / 명시적 형변환 (0) | 2019.02.15 |
C#) 네임스페이스 / 유니티 네임스페이스 (0) | 2019.02.13 |