Frage

ich es geschafft, eine Klasse erstellen CodeDom mit und fügen Sie zu dieser Klasse eine einzelne Methode. Nun ist es eine Möglichkeit, die CodeCompileUnit Instanz aufgebaut zu haben, den Code kompilieren und die generierte Methode aufrufen? Der Methodenaufruf hat im gleichen Kontext wie die Codegenerierung durchgeführt werden.

War es hilfreich?

Lösung

Aus einem Freund Blog Mine:

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

Sie können dann Reflexion über die Typen verwenden, um eine Instanz des Typs zu schaffen, die Sie wollen, und führen Sie welche Methode Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top