动态创建class的基本使用方式和enum是一样的,但是 往这个动态类型里添加代码还是一件比较麻烦的事情,这里最好对IL代码需要有所掌握。 static void Main(string[] args) { AppDomain domain = AppDomain.CurrentDomain; AssemblyName assemblyName = new AssemblyName("DynamicallyAssembly"); AssemblyBuilder assemblyBuilder = domain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicallyModule", "DynamicallyModule.dll",true); TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicallyAssembly.DynamicallyClass", TypeAttributes.Public); MethodBuilder methodBuilder= typeBuilder.DefineMethod("DynamicallyMethod", MethodAttributes.Public, null, null); //产生函数执行代码 ILGenerator ilgenerator = methodBuilder.GetILGenerator(); ilgenerator.EmitWriteLine("动态输出!"); ilgenerator.Emit(OpCodes.Ret); //在程序集中建类型 typeBuilder.CreateType(); assemblyBuilder.Save("DynamicallyAssembly.dll"); Type type = Type.GetType("DynamicallyAssembly.DynamicallyClass,DynamicallyAssembly", true); object obj = Activator.CreateInstance(type); MethodInfo methodinfo = type.GetMethod("DynamicallyMethod"); methodinfo.Invoke(obj, null); Console.ReadKey(); // ModuleBuilder mo }