Exécuter dynamiquement le code à partir d'un fichier texte dans l'application WPF C#
Les applications WPF C# peuvent exécuter dynamiquement du code à partir de fichiers texte distincts au moment de l'exécution. Ceci est utile dans les situations où le code change fréquemment ou lorsque le code doit être chargé à partir de ressources externes.
Pour ce faire, vous pouvez utiliser le fournisseur de code C# de Microsoft, qui vous permet de compiler et d'exécuter du code à la volée. Voici un exemple de code détaillé :
<code class="language-csharp">using System.CodeDom.Compiler; using System.Reflection; using System.Text; using System.IO; // 添加此命名空间用于文件读取 // 从文本文件加载代码 string sourceCode = File.ReadAllText("path/to/your/code.cs"); // 将"path/to/your/code.cs"替换为您的代码文件路径 // 创建C#代码提供程序 CSharpCodeProvider provider = new CSharpCodeProvider(); // 设置编译器参数 CompilerParameters compilerParams = new CompilerParameters { GenerateInMemory = true, GenerateExecutable = false, ReferencedAssemblies = { "mscorlib.dll", "System.dll", "System.Windows.Forms.dll" } // 添加必要的引用程序集 }; // 编译代码 CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, sourceCode); // 检查错误 if (results.Errors.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (CompilerError error in results.Errors) { sb.AppendLine(error.ToString()); } throw new Exception("编译错误:" + sb.ToString()); } // 创建已编译代码的实例 object instance = results.CompiledAssembly.CreateInstance("CustomCode.MyCode"); // 假设您的代码定义在CustomCode命名空间下,类名为MyCode // 调用方法以执行代码 MethodInfo method = instance.GetType().GetMethod("Execute"); if (method != null) { method.Invoke(instance, null); } else { throw new Exception("未找到Execute方法。"); }</code>
Cet exemple lit le code à exécuter à partir d'une chaîne sourceCode
. Assurez-vous de remplacer "path/to/your/code.cs"
par le chemin réel de votre fichier texte. De plus, nous avons ajouté les paramètres d'espace de noms System.IO
et ReferencedAssemblies
nécessaires pour garantir que le compilateur puisse trouver les assemblys nécessaires. La gestion des erreurs a également été améliorée pour fournir des informations plus détaillées sur les erreurs.
Cette approche vous permet de charger et d'exécuter dynamiquement du code à partir de fichiers externes, offrant ainsi flexibilité et adaptabilité dans la conception d'applications. Veuillez noter que cette approche présente un risque de sécurité et ne doit être utilisée que sur des sources de code fiables.
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!