Heim >Backend-Entwicklung >C++ >Wie kann ich Code aus einer Textdatei in einer WPF-C#-Anwendung ausführen?
Dynamische Codeausführung in WPF C#-Anwendungen
Dieser Artikel befasst sich mit dem Problem der Ausführung von Code aus einer externen Textdatei innerhalb einer WPF-C#-Anwendung. Die Textdatei, die den auszuführenden Code enthält, befindet sich im Ausführungsverzeichnis der Anwendung.
Umsetzung
Diese Lösung nutzt eine Kombination aus Codekompilierungs- und Reflexionstechniken. Der Prozess umfasst die Echtzeitkompilierung des Codes aus der Textdatei und die anschließende Instanziierung und den Aufruf der Zielmethode aus der kompilierten Assembly.
Der folgende Codeausschnitt veranschaulicht diesen Ansatz:
<code class="language-csharp">// ... code ... Dictionary<string, string> providerOptions = new Dictionary<string, string> { {"CompilerVersion", "v3.5"} }; CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions); CompilerParameters compilerParams = new CompilerParameters { GenerateInMemory = true, GenerateExecutable = false }; CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, sourceCode); if (results.Errors.Count > 0) throw new Exception("Compilation failed!"); object instance = results.CompiledAssembly.CreateInstance("Foo.Bar"); // Assuming the class is named "Bar" in the "Foo" namespace MethodInfo method = instance.GetType().GetMethod("SayHello"); // Assuming the method is named "SayHello" method.Invoke(instance, null);</code>
Ausführliche Erklärung
Der Code liest zunächst den C#-Code aus der Textdatei in eine String-Variable (sourceCode
). Ein CSharpCodeProvider
wird mit angegebenen Compileroptionen initialisiert. CompilerParameters
sind so eingestellt, dass sie die kompilierte Assembly im Speicher generieren, ohne eine ausführbare Datei zu erstellen. Die CompileAssemblyFromSource
-Methode führt dann die Kompilierung durch.
Die Fehlerprüfung folgt dem Kompilierungsprozess. Wenn die Kompilierung erfolgreich ist, wird eine Instanz der kompilierten Klasse mit CreateInstance
erstellt und die angegebene Methode wird mit GetMethod
und Invoke
aufgerufen. Dies ermöglicht die dynamische Ausführung von extern geladenem Code. Beachten Sie, dass die Namespace- und Klassen-/Methodennamen mit dem Code in der Textdatei übereinstimmen müssen. Für die Robustheit in einer Produktionsumgebung sollte eine Fehlerbehandlung (z. B. Try-Catch-Blöcke) hinzugefügt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Code aus einer Textdatei in einer WPF-C#-Anwendung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!