참고 영상 : 리플렉션
런타임에 프로그램의 메타데이터를 조회하거나 조작하는 기능이다.
System.Object는 형식 정보를 반환하는 GetType() 메서드를 갖고있다. (즉, 모든 데이터가 해당 메서드를 갖는다.)
리플렉션을 사용하면 객체 생성도 가능하다. (플러그인을 만들 때 유리)
| 메소드 | 반환 형식 | 설명 |
|---|---|---|
| GetConstructors() | ConstructorInfo[] | 해당 형식의 모든 생성자 목록을 반환한다. |
| GetEvents() | EventInfo[] | 해당 형식의 이벤트 목록을 반환한다. |
| GetFields() | FieldInfo[] | 해당 형식의 필드 목록을 반환한다. |
| GetGenericArguments() | Type[] | 해당 형식의 형식 매개 변수 목록을 반환한다. |
| GetInterfaces() | Type[] | 해당 형식이 상속하는 인터페이스 목록을 반환한다. |
| GetMembers() | MemberInfo[] | 해당 형식의 멤버 목록을 반환한다. |
| GetMethods() | MethodInfo[] | 해당 형식의 메소드 목록을 반환한다. |
| GetNestedTypes() | Type[] | 해당 형식의 내장 형식 목록을 반환한다. |
| GetProperties() | PropertyInfo[] | 해당 형식의 프로퍼티 목록을 반환한다. |
애트리뷰트는 코드에 메타데이터를 추가하는 방법으로,
클래스, 속성과 같은 거의 모든 코드 요소에 적용할 수 있다.
코드에 붙인 특성은 리플렉션을 통해 런타임에 조회할 수 있다.
[Serializable]
public class SampleClass { }
위 예시에서
[Serializable]이 애트리뷰트다.