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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-07 19:57:41689parcourir

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

Exécution de code dynamique dans les applications WPF C#

Cet article aborde le problème de l'exécution de code à partir d'un fichier texte externe au sein d'une application WPF C#. Le fichier texte, contenant le code à exécuter, réside dans le répertoire d'exécution de l'application.

Mise en œuvre

Cette solution exploite une combinaison de techniques de compilation de code et de réflexion. Le processus implique la compilation en temps réel du code à partir du fichier texte, puis l'instanciation et l'invocation ultérieures de la méthode cible à partir de l'assembly compilé.

L'extrait de code suivant illustre cette approche :

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

Explication détaillée

Le code lit d'abord le code C# du fichier texte dans une variable chaîne (sourceCode). Un CSharpCodeProvider est initialisé avec les options spécifiées du compilateur. CompilerParameters sont configurés pour générer l'assembly compilé en mémoire, sans créer de fichier exécutable. La méthode CompileAssemblyFromSource effectue ensuite la compilation.

La vérification des erreurs suit le processus de compilation. Si la compilation réussit, une instance de la classe compilée est créée à l'aide de CreateInstance et la méthode spécifiée est invoquée à l'aide de GetMethod et Invoke. Cela permet une exécution dynamique du code chargé en externe. Notez que les noms d’espace de noms et de classe/méthode doivent correspondre au code du fichier texte. La gestion des erreurs (par exemple, des blocs try-catch) doit être ajoutée pour plus de robustesse dans un environnement de production.

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