C# Reflection문

2023. 4. 5. 11:14·C#
반응형

소개

C# Reflection은 .NET Framework에서 제공하는 기능으로, 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 실행 중에 형식, 메서드, 필드 등을 검사하고 이러한 멤버를 조작할 수 있습니다. 이번 글에서는 C# Reflection에 대해 자세히 살펴보겠습니다.


Reflection이란?

Reflection은 .NET Framework에서 제공하는 기능으로, 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 실행 중에 형식, 메서드, 필드 등을 검사하고 이러한 멤버를 조작할 수 있습니다. Reflection은 주로 다음과 같은 작업을 수행하는 데 사용됩니다.

  • 객체의 형식을 검사하거나 변경합니다.
  • 실행 중에 새로운 객체 인스턴스를 만듭니다.
  • 실행 중에 메서드를 호출합니다.
  • 실행 중에 필드 값을 가져오거나 설정합니다.

Reflection 사용 예제

다음은 Reflection을 사용하여 객체의 형식을 검사하고 메서드를 호출하는 간단한 예제입니다.

using System;
using System.Reflection;

class Program
{
    static void Main()
    {
        // 객체 생성
        var obj = new MyClass();

        // 형식 검사
        Type type = obj.GetType();
        Console.WriteLine("Type Name: " + type.Name);

        // 메서드 호출
        MethodInfo methodInfo = type.GetMethod("MyMethod");
        methodInfo.Invoke(obj, null);
    }
}

class MyClass
{
    public void MyMethod()
    {
        Console.WriteLine("MyMethod called");
    }
}

위의 예제에서는 MyClass라는 간단한 클래스를 정의하고, 이 클래스의 MyMethod라는 메서드를 호출합니다. Main 메서드에서는 MyClass의 인스턴스를 생성하고, GetType() 메서드를 사용하여 해당 인스턴스의 형식을 가져옵니다. 형식을 가져온 후, GetMethod() 메서드를 사용하여 MyMethod 메서드에 대한 MethodInfo 객체를 가져옵니다. 마지막으로, Invoke() 메서드를 사용하여 MyMethod 메서드를 호출합니다.


Reflection의 장점

Reflection은 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. 이를 통해 런타임 시점에서 유연한 코드 작성이 가능해집니다. Reflection을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

  • 코드의 동적 생성
  • 코드의 동적 로딩
  • 메서드 호출
  • 속성 및 필드 값 변경
  • 형식 검사

Reflection의 단점

Reflection은 일반적으로 성능 저하를 초래할 수 있습니다. Reflection을 사용하면 실행 속도가 느려지고 메모리 사용량이 증가할 수 있습니다. 또한, Reflection을 사용하면 코드의 가독성이 떨어질 수 있습니다.


결론

C# Reflection은 실행 중에 코드를 검사하고 조작할 수 있도록 합니다. Reflection을 사용하면 코드의 유연성이 향상되며, 동적으로 코드를 조작할 수 있습니다. 하지만 Reflection은 일반적으로 성능 저하를 초래할 수 있으므로, 사용 시 주의가 필요합니다. 이번 글을 통해 C# Reflection에 대해 더욱 자세히 알아보았습니다.

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

C# 문자열  (0) 2023.04.07
C# 사용자 지정 예외 클래스  (0) 2023.04.06
C# 네이밍 규칙 : PascalCase, camelCase, Snake case  (0) 2023.04.05
C# 객체지향 다형성 : new, virtual, override, sealed  (0) 2023.03.30
C# 정규표현식  (0) 2023.03.29
'C#' 카테고리의 다른 글
  • C# 문자열
  • C# 사용자 지정 예외 클래스
  • C# 네이밍 규칙 : PascalCase, camelCase, Snake case
  • C# 객체지향 다형성 : new, virtual, override, sealed
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (727)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (18)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    라떼우유
    유니티
    파이썬
    programming101
    스크립트 실행
    믈레코비타멸균우유
    리뷰관리
    스크립트 실행 순서
    unity
    카페24리뷰
    셀레니움
    리뷰이관
    codingtips
    cv2
    C#
    스마트스토어리뷰
    리스트
    상품 리뷰 크롤링
    list
    appdevelopment
    쇼핑몰리뷰
    ipcamera
    카페24리뷰이관
    learntocode
    Python
    codingcommunity
    programmerlife
    devlife
    rtsp
    긴유통기한우유
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
C# Reflection문
상단으로

티스토리툴바