kompilasi dinamik dan pelaksanaan serpihan kod
<:> Soalan:
Bolehkah ia menyusun dan melaksanakan serpihan kod C#yang disimpan dalam fail atau aliran input?
Jawapan:
Sudah tentu! Dalam C#dan bahasa statik .NET lain, CodeDom (model objek dokumen kod) adalah penyelesaian terbaik untuk tugas -tugas tersebut. Ia juga boleh digunakan sebagai segmen kod membina dinamik atau seluruh kelas. pelaksanaan:
Untuk mencapai kompilasi dinamik, gunakan kelas CSharpCodeProvider. Contoh seperti berikut:
pelaksanaan:
Untuk melaksanakan kod yang disusun, gunakan pemasangan pemuatan dinamik refleks.
<code class="language-csharp">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); } } }</code>
Dengan menggunakan CodeDom, anda boleh menyusun dan melaksanakan fragmen kod C#untuk menyediakan penyelesaian yang kuat dan sejagat untuk keperluan pengaturcaraan anda. Sila ambil perhatian bahawa
akan dibuat dalam direktori output projek anda. Kod ini akan mencetak semua nombor antara 1 hingga 100.
Atas ialah kandungan terperinci Bolehkah serpihan kod C# disusun secara dinamik dan dilaksanakan dari fail atau aliran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!