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 に答える