Heim >Backend-Entwicklung >C++ >Wie kann ich C#-Code aus einer Datei in einer WPF-Anwendung dynamisch ausführen?

Wie kann ich C#-Code aus einer Datei in einer WPF-Anwendung dynamisch ausführen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-07 19:37:42557Durchsuche

How Can I Dynamically Execute C# Code from a File in a WPF Application?

Dynamische Ausführung von C#-Codedateien

Frage:

Ihre WPF-C#-Anwendung verfügt über eine Schaltfläche, die den Code ausführen muss, der in einer separaten Textdatei im Laufzeitverzeichnis der Anwendung gespeichert ist.

Lösung:

Um Code in einer Textdatei dynamisch auszuführen, befolgen Sie diese Schritte:

  1. Code kompilieren: Verwenden Sie einen C#-Compiler (z. B. CSharpCodeProvider), um den Code in der Textdatei in eine Assembly zu kompilieren.
  2. Erstellen Sie eine Instanz einer kompilierten Assembly: Verwenden Sie die CreateInstance()-Methode der System.Reflection.Assembly-Klasse, um eine Instanz einer kompilierten Assembly zu erstellen.
  3. Aufrufen einer Methode: Verwenden Sie die Methoden GetMethod() und Invoke() der Klasse System.Reflection.Type, um die gewünschte Methode für die Instanz aufzurufen.

Hier ist Beispielcode zum Ausführen einer dynamisch kompilierten Klassenmethode:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Net;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string source =
            @"
namespace Foo
{
    public class Bar
    {
        public void SayHello()
        {
            System.Console.WriteLine(""Hello World"");
        }
    }
}
            ";

            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, source);

            if (results.Errors.Count != 0)
                throw new Exception("编译失败!");

            object o = results.CompiledAssembly.CreateInstance("Foo.Bar");
            MethodInfo mi = o.GetType().GetMethod("SayHello");
            mi.Invoke(o, null);
        }
    }
}</code>

Mit diesen Schritten können Sie C#-Code dynamisch aus einer Codedatei in einer WPF-Anwendung ausführen.

Das obige ist der detaillierte Inhalt vonWie kann ich C#-Code aus einer Datei in einer WPF-Anwendung dynamisch ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn