동적 메서드 및 어셈블리 생성
이 단원에서는 컴파일러나 도구를 통해 런타임에 메타데이터와 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"이 있습니다. 이 설명서는 MSDN 및 Ecma 웹 사이트에서 온라인으로 구할 수 있습니다.
단원 내용
리플렉션 내보내기 추상화
어셈블리와 형식, 메서드와 메서드 매개 변수, 이벤트, 생성자, 속성 등을 정의하는 데 사용할 수 있는 리플렉션 내보내기 클래스를 나열하고 설명합니다.동적 형식 생성을 위해 수집 가능한 어셈블리
코드를 실행하여 사용할 수 있는 형식이 없을 때 가비지 수집에 의해 언로드되고 회수될 수 있는 동적 어셈블리를 만들고 사용하는 방법에 대해 설명합니다.리플렉션 내보내기 동적 메서드 시나리오
간단한 동적 메서드의 정의 및 사용에 대해 설명합니다.리플렉션 내보내기 동적 어셈블리 시나리오
동적 어셈블리에 정의된 동적 모듈을 내보내는 핵심 리플렉션 내보내기 시나리오에 대해 설명합니다.리플렉션 내보내기 응용 프로그램 시나리오
웹 브라우저에서 스크립트 실행, ASP.NET 페이지에서 스크립트 실행 및 정규식 컴파일을 포함하여 리플렉션 내보내기에서 지원하는 응용 프로그램 시나리오에 대해 설명합니다.리플렉션 내보내기의 보안 문제점
리플렉션 내보내기를 사용하여 동적 어셈블리를 만드는 것과 관련된 보안 문제를 설명합니다.리플렉션 내보내기 사용
간단한 동적 메서드 생성 및 제네릭 형식과 메서드 내보내기에 대한 방법 항목과 함께 리플렉션 내보내기를 사용하여 수행할 수 있는 기본 작업에 대해 설명합니다.리플렉션 내보내기에 대한 추가 정보
리플렉션 내보내기와 관련된 기타 문서를 설명합니다.
참조
OpCodes
메서드 본문을 빌드하는 데 사용할 수 있는 MSIL 명령 코드의 목록을 작성합니다.System.Reflection.Emit
동적 메서드, 어셈블리 및 형식을 내보내는 데 사용하는 관리되는 클래스가 들어 있습니다.Type
관리되는 리플렉션 및 리플렉션 내보내기의 형식을 나타내고 이러한 기술 사용에 핵심 요소인 Type 클래스에 대해 설명합니다.System.Reflection
메타데이터와 관리 코드를 탐색하는 데 사용하는 관리되는 클래스가 들어 있습니다.
관련 단원
리플렉션
메타데이터와 관리 코드를 탐색하는 방법을 설명합니다.공용 언어 런타임의 어셈블리
.NET Framework의 어셈블리 개요를 제공합니다.