반응형
아래 글은 C# 특성(Attribute)과 리플렉션(Reflection) 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 46단원 특성과 리플렉션 614 ~ 627페이지
- 유튜브 채널 VisualAcademy [C# 교과서 마스터하기 46. 특성과 리플렉션]
- 닷넷코리아 (https://www.dotnetkorea.com/)
https://www.youtube.com/watch?v=oWoclcZhcUQ
✳ 특성(Attribute)
- 프로그램에서 형식, 멤버 및 다른 엔터티에 대한 추가 선언 정보를 지정 가능
- 자동차 튜닝 -> 없었던 기능을 꾸며준다
✳ 리플렉션(Reflection)
- CLR을 자기 자신에 대한 내용을 노출시켜주는 API를 제공
- System.Typpe으로 리플렉션을 구현
- 자동차 전시회
-> 리플렉션(반사?)
=> 광택이 적용된 럭셔리 자동차들 - 동적으로 특정한 형식의 멤버를 가져오려고 한다.
✳ 특성(Attribute)관련 예제코드
using System;
class 특성
{
/// <summary>
/// 닷넷 1.0 버전
/// </summary>
[
Obsolete(
"현재 메서드는 오래된 버전이므로, Say2()를 사용하세요.", false)
]
public static void Say1()
{
Console.WriteLine("안녕");
}
/// <summary>
/// 닷넷 2.0 버전 이상
/// </summary>
public static void Say2()
{
Console.WriteLine("안녕하세요");
}
static void Main(string[] args)
{
//Say1(); // 이 메서드 호출시 경고 또는 에러 발생
Say2();
}
}
✳ 리플렉션(Reflection)관련 예제코드
//[?] 리플렉션: 특정 클래스 등에 대한 정보(메타데이터)를 반환시켜주는 기능
using System;
using System.Reflection;
namespace 리플렉션_멤버정보
{
class Test
{
public void TestMethod() { }
}
class 리플렉션_멤버정보
{
static void Main()
{
// Test 클래스에 대한 멤버 정보 얻기
Type t = typeof(Test);
// 인스턴스 멤버 기준으로 출력
// MemberInfo[] members = t.GetMembers();
// 원하는 멤버를 조건에 따라 출력
MemberInfo[] members = t.GetMembers(
BindingFlags.Instance | BindingFlags.Static |
BindingFlags.NonPublic | BindingFlags.Public
);
// 멤버 출력: C# 버전에 따라 다르게 출력될 수 있음
foreach (var member in members)
{
Console.WriteLine("{0}", member.Name);
}
}
}
}
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 제네릭(Generic) 클래스 만들기 (0) | 2021.06.12 |
---|---|
C# 개체(Object)와 개체지향프로그래밍 (0) | 2021.06.11 |
C# 메서드(Method) 오버라이드 (0) | 2021.06.09 |
C# 상속(Inherits)으로 클래스 확장하기 (0) | 2021.06.08 |
C# 인덱서(Indexer)와 반복기(Iterator) (0) | 2021.06.07 |