kompilasi dinamik dan pelaksanaan serpihan kod
Artikel ini memperkenalkan cara menyusun dan melaksanakan fragmen kod C#dari fail teks atau aliran input. Adalah disyorkan untuk menggunakan Model Objek Dokumen Kod (CODEDOM) dalam bahasa C#dan .NET untuk mencapai fungsi ini.
CodeDom membolehkan anda mengendalikan kod sebagai objek dan menggunakan pengkompil untuk menyusun secara dinamik kod. Serpihan kod berikut menunjukkan kaedah ini:
Dalam contoh ini,
<code class="language-csharp">using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { 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; 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); } } }"); // 检查错误 results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText)); // 动态加载并执行已编译的程序集 if (results.Errors.Count == 0) { Assembly assembly = results.CompiledAssembly; var type = assembly.GetTypes()[0]; var method = type.GetMethod("Main"); method.Invoke(null, new object[] { new string[] { } }); } } }</code>
digunakan untuk kod kompilasi dinamik. Sekiranya tiada ralat penyusunan, muatkan set program yang disusun secara dinamik dan panggil kaedah CompilationParameters
. Untuk menunjukkan hasilnya lebih lengkap, kod sampel telah diubah suai kepada hasil boneka yang dicetak. CSharpCodeProvider
Main
Kaedah ini menyediakan penyelesaian yang fleksibel dan umum untuk kompilasi dinamik dan pelaksanaan serpihan kod C#, yang membolehkan anda merealisasikan pelbagai senario, seperti pelaksanaan skrip atau penjanaan kod dinamik.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyusun dan melaksanakan serpihan kod C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!