Question:
peut-il compiler et exécuter dynamiquement le fragment de code C # enregistré dans le fichier ou le flux d'entrée?
Réponse:
bien sûr! Dans C # et d'autres langues .NET statiques, la codéme (modèle d'objet de document de code) est la meilleure solution pour de telles tâches. Il peut également être utilisé comme un segment de code de construction dynamique ou la classe entière. implémenter:
Pour obtenir une compilation dynamique, utilisez la classe CSharpCodeProvider. Exemples comme suit:
Exécution:
Pour exécuter le code compilé, utilisez l'assemblage de chargement dynamique réflexe.
using System; using System.Collections.Generic; using Microsoft.CSharp; using System.CodeDom.Compiler; public class Program { public static void Main(string[] args) { // 创建C#代码提供程序 var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } }); // 设置编译器参数 var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true); parameters.GenerateExecutable = true; // 编译代码 CompilerResults results = csc.CompileAssemblyFromSource(parameters, @" using System.Linq; public class Program { public static void Main(string[] args) { var q = from i in Enumerable.Range(1,100) where i % 2 == 0 select i; foreach(var item in q) { Console.WriteLine(item); } } }" ); // 处理任何错误 foreach (CompilerError error in results.Errors) { Console.WriteLine(error.ErrorText); } } }
En utilisant la codéme, vous pouvez compiler et exécuter dynamiquement le fragment de code C # pour fournir des solutions solides et universelles pour vos besoins de programmation. Veuillez noter que
sera créé dans le répertoire de sortie de votre projet. Ce code imprimera tous les nombres pair entre 1 et 100.
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!