AppDomain currentDomain = AppDomain.CurrentDomain; AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule"); TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicType", TypeAttributes.Public); MethodInfo methodInfo = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }); ILGenerator ilGenerator = methodBuilder.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldstr, "Hello World"); ilGenerator.Emit(OpCodes.Call, methodInfo); ilGenerator.Emit(OpCodes.Ret); Type dynamicType = typeBuilder.CreateType(); dynamicType.GetMethod("DynamicMethod").Invoke(null, null);
AppDomain currentDomain = AppDomain.CurrentDomain; AssemblyName assemblyName = new AssemblyName("DynamicAssembly"); AssemblyBuilder assemblyBuilder = currentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Save); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule", "DynamicAssembly.dll"); TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicType", TypeAttributes.Public); MethodInfo methodInfo = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }); ILGenerator ilGenerator = methodBuilder.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldstr, "Hello World"); ilGenerator.Emit(OpCodes.Call, methodInfo); ilGenerator.Emit(OpCodes.Ret); Type dynamicType = typeBuilder.CreateType(); assemblyBuilder.Save("DynamicAssembly.dll");This code example is similar to the previous example, except that the AssemblyBuilderAccess.Save flag is used to indicate that the assembly should be saved to disk after creation. The assembly is saved as "DynamicAssembly.dll". Package library: System.Reflection.Emit.