1

我设法使用 CodeDom 创建了一个类,并向该类添加了一个方法。现在,有没有办法在构造 CodeCompileUnit 实例后编译代码并调用生成的方法?方法调用必须在与代码生成相同的上下文中完成。

4

1 回答 1

5

摘自我一个朋友的博客

    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();

然后,您可以对类型使用反射来创建所需类型的实例并执行所需的任何方法。

于 2008-10-16T14:14:03.327 回答