[C#, 유니티] 리플렉션(Reflection)

2022. 10. 11. 18:21코딩 2막 <C#개념편>

728x90

Reflection이란 말 그대로 반사라는 의미를 담고 있다

반사되어 비추듯, 객체(instance)를 토대로 데이터타입의 메타적인(상위) 정보를 가져오는 기법이다

 

reflection의 기능을 이용하면 프로그램 실행 중에 객체의 형식 이름부터 프로퍼티 목록, 메서드 목록, 필드,

심지어 이벤트 목록까지 모두 열어볼 수 있다

이것이 왜 중요하냐면 런타임에서 메서드를 호출하거나 필드의 값을 바꾸는 등의 작업들을 할 수가 있게 된다!!

매서드 반환 형식 비고
GetFields() FieldInfo[] 해당 형식의 필드 목록 반환
GetMembers() MemberInfo[] 해당 형식의 멤버 목록 반환
GetMethods() MethodInfo[] 해당 형식의 메소드 목록 반환
GetProperties() PropertyInfo[] 해당 형식의 프로퍼티 목록 반환

+) 오브젝트들은 모든 데이터 형식의 최상위이기 때문에 오브젝트의 GetType()을 반환하면 다음과 같은 메서드를 물려 받는다

GetType() 메서드는 Type 형식의 결과를 반환한다

여기서 Type이란 클래스는 "데이터 타입의 정보가 담긴 클래스"를 말한다


먼저 리플렉션을 쓰려면 using System을 추가해주어야 한다

(*) 당연하게도 리플렉션은 Update에서 사용하는것은 지양해야한다 (런타임동안 연산하는 과정이 많기때문에..)


공감해주셔서 감사합니다

 

728x90