"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 #?

Publié le 2025-02-06
Parcourir:605

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

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

Cet article aborde le problème de l'exécution du code à partir d'un fichier texte externe dans 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 une compilation en temps réel du code à partir du fichier texte et une instanciation et une invocation subséquentes de la méthode cible à partir de l'assemblage compilé.

L'extrait de code suivant illustre cette approche:

// ... code ...

Dictionary providerOptions = new Dictionary
{
    {"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);

Explication détaillée

Le code lit d'abord le code C # du fichier texte en une variable de chaîne ( sourcecode ). Un csharpcodeprovider est initialisé avec des options de compilateur spécifiées. CompilerParameters sont définis pour générer l'assemblage compilé en mémoire, sans créer de fichier exécutable. La méthode CompileSemblyFromsource effectue alors la compilation.

La vérification des erreurs suit le processus de compilation. Si la compilation est réussie, 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 invoque . Cela permet une exécution dynamique du code chargé à l'extérieur. Notez que l'espace de noms et les noms de classe / méthode doivent correspondre au code dans le fichier texte. La gestion des erreurs (par exemple, les blocs de couple d'essai) doit être ajoutée pour la robustesse dans un environnement de production.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3