生成されたメソッドをコンパイルして呼び出す
-
03-07-2019 - |
質問
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();
その後、型のリフレクションを使用して、必要な型のインスタンスを作成し、必要なメソッドを実行できます。
所属していません StackOverflow