public DefineDynamicModule ( string name ) : System.Reflection.Emit.ModuleBuilder | ||
name | string | |
return | System.Reflection.Emit.ModuleBuilder |
using System; using System.Reflection; using System.Reflection.Emit; class Program { static void Main(string[] args) { // Create a dynamic assembly builder AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("MyDynamicAssembly"), AssemblyBuilderAccess.RunAndSave); // Define a dynamic module ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MyDynamicModule", "MyDynamicAssembly.dll"); // Define a new class TypeBuilder typeBuilder = moduleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public); // Define a new method MethodBuilder methodBuilder = typeBuilder.DefineMethod("MyDynamicMethod", MethodAttributes.Public | MethodAttributes.Static, typeof(void), null); // Generate IL code for the method ILGenerator il = methodBuilder.GetILGenerator(); il.Emit(OpCodes.Ldstr, "Hello, world!"); il.Emit(OpCodes.Call, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) })); il.Emit(OpCodes.Ret); // Create the dynamic class Type dynamicType = typeBuilder.CreateType(); // Call the dynamic method via reflection MethodInfo dynamicMethod = dynamicType.GetMethod("MyDynamicMethod"); dynamicMethod.Invoke(null, null); // Save the assembly to disk assemblyBuilder.Save("MyDynamicAssembly.dll"); } }In this example, we create a dynamic assembly builder using "DefineDynamicAssembly", and then define a dynamic module using "DefineDynamicModule". Within the module, we define a new class using "DefineType", and a new method using "DefineMethod". The method emits IL code using "ILGenerator" to write "Hello, world!" to the console. We then create the dynamic class using "CreateType", and call the dynamic method using reflection. Finally, we save the dynamic assembly to disk using "Save". Overall, this example demonstrates the power and flexibility of the "System.Reflection.Emit" package library in C# for generating and executing code dynamically at runtime.
public DefineDynamicModule ( string name ) : System.Reflection.Emit.ModuleBuilder | ||
name | string | |
return | System.Reflection.Emit.ModuleBuilder |