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(assemblyName, AssemblyBuilderAccess.Run);
var moduleBuilder = assemblyBuilder.DefineDynamicModule("MainModule");
var typeBuilder = moduleBuilder.DefineType("HelloType", TypeAttributes.Public);
var methodBuilder = typeBuilder.DefineMethod("SayHello",
MethodAttributes.Public | MethodAttributes.Static,
typeof(void), Type.EmptyTypes);
var il = methodBuilder.GetILGenerator();
il.EmitWriteLine("Hello from dynamic assembly!");
il.Emit(OpCodes.Ret);
var helloType = typeBuilder.CreateType();
var method = helloType.GetMethod("SayHello");
method.Invoke(null, null);
}
}
이 코드는 런타임에 "HelloType" 클래스를 만들고, "SayHello" 메서드를 정의해서 콘솔에 메시지를 출력합니다.
3. 활용 팁
동적 어셈블리는 즉석에서 코드를 생성하여 플러그인, 스크립팅, 표현식 평가 등에 활용할 수 있습니다.
'C#' 카테고리의 다른 글
| C# Reflection.Emit으로 런타임 코드 생성하기 (0) | 2026.06.04 |
|---|---|
| C# 이벤트 필터링으로 불필요한 이벤트 호출 방지 (0) | 2026.06.02 |
| C# Dictionary의 커스텀 키 해싱 전략 구현 (0) | 2026.06.02 |
| C# DateOnly와 TimeOnly 타입 활용 (0) | 2026.06.01 |
| C# IDisposable을 통한 비관리 리소스 해제 사례 (1) | 2026.06.01 |