Reflection.Emit 썸네일형 리스트형 C# Reflection으로 메타데이터 수정하기 Reflection은 주로 메타데이터를 읽고 멤버를 호출하는 용도로 설계되었습니다. 이미 로드된 타입의 메타데이터를 순수 Reflection으로 직접 수정할 수는 없습니다. 그럼에도 불구하고, 실무에서 “수정처럼” 보이게 다루는 방법은 있습니다. 이 글에서는 가능한 3가지 실용 루트를 간단히 정리합니다.1. 현실과 한계핵심 요약입니다.1) 로드된 기존 타입의 특성(Attribute)이나 시그니처를 Reflection으로 교체/추가/삭제할 수 없습니다.2) 대신 다음을 활용할 수 있습니다.- TypeDescriptor: 디자인 타임/컴포넌트 모델 관점의 메타데이터를 런타임에 덧입히기- Reflection.Emit: 새 동적 타입을 만들 때 원하는 메타데이터(특성 등) 정의- 오프라인 리라이팅: Mono.C.. 더보기 C# Reflection.Emit으로 런타임 코드 생성하기 C#의 Reflection.Emit은 런타임에 동적으로 어셈블리와 메서드를 생성할 수 있는 강력한 기능입니다. 이를 통해 실행 중인 프로그램에 새로운 타입이나 메서드를 추가하거나, 고성능 동적 코드를 작성할 수 있습니다.1. Reflection.Emit 기본 개념Reflection.Emit은 System.Reflection.Emit 네임스페이스에 포함되어 있으며, 런타임에 어셈블리, 모듈, 타입, 메서드 등을 생성하는 API를 제공합니다. IL(중간언어) 코드를 직접 작성해서 동적 메서드를 만듭니다.2. 간단한 동적 메서드 생성 예제아래 예제는 두 정수를 더하는 메서드를 런타임에 생성하는 코드입니다.using System;using System.Reflection.Emit;public class Dyna.. 더보기 C# 동적 어셈블리 생성과 실행 C#에서는 동적으로 어셈블리를 생성하고 실행할 수 있습니다. 이 기능은 런타임에 코드를 생성하고 실행해야 하는 상황에서 유용합니다.1. 동적 어셈블리 생성 기본System.Reflection.Emit 네임스페이스를 이용해 동적 어셈블리를 생성할 수 있습니다.2. 간단한 예제 코드using System;using System.Reflection;using System.Reflection.Emit;class Program{ static void Main() { var assemblyName = new AssemblyName("DynamicAssembly"); var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(asse.. 더보기 이전 1 다음