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
'C# > 이것이 C#이다' 카테고리의 다른 글
[C# 기초강의] Ch 18. 파일 다루기 (0) | 2023.08.10 |
---|---|
[C# 기초강의] Ch 17. dynamic 형식 (0) | 2023.08.10 |
[C# 기초강의] Ch 15. LINQ (0) | 2023.08.10 |
[C# 기초강의] Ch 14. 람다식 (0) | 2023.08.10 |
[C# 기초강의] Ch 13. 대리자와 이벤트 (0) | 2023.08.10 |