Maison >développement back-end >C++ >Comment puis-je exécuter dynamiquement du code C# à partir d'un fichier dans une application WPF ?

Comment puis-je exécuter dynamiquement du code C# à partir d'un fichier dans une application WPF ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-07 19:37:42553parcourir

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

Exécution dynamique des fichiers de code C#

Question :

Votre application WPF C# est livrée avec un bouton qui doit exécuter le code stocké dans un fichier texte distinct dans le répertoire d'exécution de l'application.

Solution :

Pour exécuter dynamiquement du code dans un fichier texte, suivez ces étapes :

  1. Compile le code : Utilisez un compilateur C# (tel que CSharpCodeProvider) pour compiler le code du fichier texte dans un assembly.
  2. Créer une instance d'un assembly compilé : Utilisez la méthode CreateInstance() de la classe System.Reflection.Assembly pour créer une instance d'un assembly compilé.
  3. Invoquer une méthode : Utilisez les méthodes GetMethod() et Invoke() de la classe System.Reflection.Type pour invoquer la méthode souhaitée sur l'instance.

Voici un exemple de code sur la façon d'exécuter une méthode de classe compilée dynamiquement :

<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>

En suivant ces étapes, vous pouvez exécuter dynamiquement du code C# à partir d'un fichier de code dans une application WPF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn