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
Libérer: 2025-01-07 19:37:42
original
550 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal