[C# 기초강의] Ch 16. 리플렉션과 애트리뷰트

728x90
https://www.youtube.com/watch?v=aDGvR5Fk9J4&list=PLVsNizTWUw7GN8wPRhclbKuQa9aI9Cj2V&index=17

📌 리플렉션

◾리플렉션의 개념

  • 런타임에 객체 형식 정보를 들여다보는 기능
  • System.Object는 형식 정보를 반환하는 GetType()메서드 보유
    즉, 모든 데이터 형식은 System.Object 형식을 상속하므로 GetType()메서드 또한 보유

 

◾런타임에 형식 정보 얻기

  • Object.GetType() 메서드는 System.Type 형식 결과를 반환
  • Type 형식은 .NET 데이터 형식의 모든 정보(메서드, 필드, 프로퍼티 등)를 표현
int a = 0;

Type type = a.GetType();

FrieldInfo[] Fieds = type.GetFields();

foreach (FiledInfo field in fields)
	Colsole.WriteLine("Type{0}, Name:{1}", field.FieldType.Name, field.Name);

 

◾System.Type의 주요메서드

메서드반환형식설명

GetConstructors() Constructorlnfo[] 모든 생성자 목록을 반환
GetEvents() EventInfo[] 이벤트 목록을 반환
getFields() FieldInfo[] 필드 목록 반환
GetGenericArguments() Type[] 해당 형식의 매개변수 목록을 반환
GetInterfaces() Type[] 해당 형식이 상속하는 인터페이스 목록을 반환
GetMembers() MemberInfo[] 해당 형식의 멤버 목록 반환
GetMethods() MethodInfo[] 메서드 목록 반환
GetProperties() PropertyInfo[] 프로퍼티 목록을 반환

 

◾System.Type.Get @ () 검색옵션

  • System.Reflection.BindingFlags 열거형 상수를 조합

 

◾리플렉션을 이용한 객체 생성 및 활용

  • System.Activator 클래스에게 System.Type 객체를 입력하여 인스턴스 생성
    -PropertyInfo 클래스의 GetValue()로 값을 읽고 SetValue()로 값 기록
  • MethodInfo 클래스의 Invoke() 메서드를 통해 메서드 호출


# 📌 애트리뷰트

◾애트리뷰트의 개념

  • 메타 데이터를 담는 코드 요소
  • 컴파일을 거치면 실행파일(어셈블리) 안에 저장되며 컴퓨터가 런타임에 읽을 수 있음
    주석은 사람만 읽을 수 있으며, 컴파일 거치면 실행파일에서는 제거

 

◾애트리뷰트의 활용법

  • [] 에 애프리뷰트 명과 매개변수 입력
[애트리뷰트이름 (애트리뷰트매개변수) ]
public void MyMethod()
{
	// ...
    
 }

 

◾사용자 정의 애트리뷰트

  • System.Attribute 를 상속하여 사용자 정의 애트리뷰트 선언가능
728x90