2008-10-16 36 views
1

我設法使用CodeDom創建一個類並向該類添加單個方法。現在,有沒有辦法構建CodeCompileUnit實例,編譯代碼並調用生成的方法?方法調用必須在與代碼生成相同的上下文中完成。編譯並調用生成的方法

回答

5

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

然後,您可以使用反射的類型來創建你想要的類型的實例,並執行任何你想要的方法。