代码之家  ›  专栏  ›  技术社区  ›  petr k.

编译并调用生成的方法

  •  1
  • petr k.  · 技术社区  · 16 年前

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

    1 回复  |  直到 12 年前
        1
  •  5
  •   Santiago Palladino    16 年前

    取自 friend of mine's blog :

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

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