我设法使用CodeDom创建一个类,并向该类添加一个方法.现在,有没有办法构建CodeCompileUnit实例,编译代码并调用生成的方法?方法调用必须在与代码生成相同的上下文中完成.
取自我朋友的博客:
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); codeProvider.GenerateCodeFromNamespace(codeNamespace, new StringWriter(), new CodeGeneratorOptions()); CompilerParameters param = new CompilerParameters(assemblyReferences); param.GenerateExecutable = false; param.GenerateInMemory = true; param.TreatWarningsAsErrors = false; param.WarningLevel = 4; CompilerResults results = codeProvider.CompileAssemblyFromDom(param, compileUnit); Assembly assembly = results.CompiledAssembly; Type[] types = assembly.GetExportedTypes();
然后,您可以对类型使用反射来创建所需类型的实例,并执行您想要的任何方法.