동적 메서드 및 어셈블리 생성

이 단원에서는 컴파일러나 도구를 통해 런타임에 메타데이터와 MSIL(Microsoft Intermediate Language)을 내보내고 선택적으로 디스크에 PE(이식 가능한 실행) 파일을 생성할 수 있도록 하는 System.Reflection.Emit 네임스페이스의 관리되는 형식 집합을 설명합니다. 스크립트 엔진과 컴파일러가 이 네임스페이스의 주 사용자입니다. 이 단원에서 System.Reflection.Emit 네임스페이스가 제공하는 기능을 리플렉션 내보내기라고 합니다.

리플렉션 내보내기는 다음 기능을 제공합니다.

  • DynamicMethod 클래스를 사용하여 런타임에 간단한 전역 메서드를 정의한 다음 대리자를 사용하여 실행합니다.

  • 런타임에 어셈블리를 정의한 다음 실행하거나 디스크에 저장합니다.

  • 런타임에 어셈블리를 정의한 다음 실행 및 언로드하고 이러한 어셈블리의 리소스를 회수하기 위한 가비지 수집을 허용합니다.

  • 런타임에 새 어셈블리에서 모듈을 정의한 다음 실행하거나 디스크에 저장합니다.

  • 런타임에 모듈에서 형식을 정의하고 이러한 형식의 인스턴스를 만든 다음 해당 메서드를 호출합니다.

  • 디버거나 코드 프로파일러 같은 도구에서 사용할 수 있는 정의된 모듈에 기호화된 정보를 정의합니다.

System.Reflection.Emit 네임스페이스의 관리되는 형식 이외에도 메타데이터 인터페이스 참조 설명서에 설명되어 있는 관리되지 않는 메타데이터 인터페이스가 있습니다. 관리되는 리플렉션 내보내기에서는 관리되지 않는 메타데이터 인터페이스보다 더 강력한 의미 오류 확인과 더 높은 수준의 메타데이터 추상화를 제공합니다.

메타데이터와 MSIL 작업을 위한 다른 유용한 리소스로 CLI(Common Language Infrastructure) 설명서, 특히 "Partition II: Metadata Definition and Semantics" 및 "Partition III: CIL Instruction Set"이 있습니다. 이 설명서는 MSDNEcma 웹 사이트에서 온라인으로 구할 수 있습니다.

단원 내용

참조

  • OpCodes
    메서드 본문을 빌드하는 데 사용할 수 있는 MSIL 명령 코드의 목록을 작성합니다.

  • System.Reflection.Emit
    동적 메서드, 어셈블리 및 형식을 내보내는 데 사용하는 관리되는 클래스가 들어 있습니다.

  • Type
    관리되는 리플렉션 및 리플렉션 내보내기의 형식을 나타내고 이러한 기술 사용에 핵심 요소인 Type 클래스에 대해 설명합니다.

  • System.Reflection
    메타데이터와 관리 코드를 탐색하는 데 사용하는 관리되는 클래스가 들어 있습니다.

관련 단원