동적 메서드 및 어셈블리 내보내기

이 섹션에서는 컴파일러 또는 도구가 런타임에 System.Reflection.Emit 메타데이터 및 CIL(공용 중간 언어)을 내보내고 필요에 따라 디스크에 PE(이식 가능한 실행 파일) 파일을 생성할 수 있도록 하는 네임스페이스의 관리되는 형식 집합에 대해 설명합니다. 스크립트 엔진과 컴파일러는 이 네임스페이스의 주 사용자입니다. 이 섹션에서는 네임스페이스에서 제공하는 System.Reflection.Emit 기능을 리플렉션 내보내기라고 합니다.

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

  • 런타임에 DynamicMethod 클래스를 사용하여 간단한 전역 메서드를 정의하고 대리자를 사용하여 실행합니다.
  • 런타임에 어셈블리를 정의하고 실행하거나 디스크에 저장합니다.
  • 런타임에 어셈블리를 정의하고 실행한 다음 언로드하고 가비지 수집에서 해당 리소스를 회수할 수 있게 합니다.
  • 런타임에 새 어셈블리에서 모듈을 정의하고 실행하거나 디스크에 저장합니다.
  • 런타임에 모듈에서 형식을 정의하고 이러한 형식의 인스턴스를 만든 다음 해당 메서드를 호출합니다.
  • 디버거 및 코드 프로파일러와 같은 도구에서 사용할 수 있는 정의된 모듈에 대한 기호 정보를 정의합니다.

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

메타데이터 및 CIL을 사용하는 데 유용한 또 다른 리소스는 CLI(공용 언어 인프라) 설명서, 특히 "파티션 II: 메타데이터 정의 및 의미 체계" 및 "파티션 III: CIL 명령 집합"입니다. 이 설명서는 Ecma 웹 사이트에서 온라인으로 제공됩니다.

참조

OpCodes
메서드 본문을 빌드하는 데 사용할 수 있는 CIL 명령 코드를 카탈로그로 작성합니다.

System.Reflection.Emit
동적 메서드, 어셈블리 및 형식을 내보내는 데 사용되는 관리되는 클래스를 포함합니다.

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

System.Reflection
메타데이터와 관리 코드를 탐색하는 데 사용되는 관리되는 클래스를 포함합니다.