Soalan:
Adakah ia boleh dilakukan untuk menyusun dan melaksanakan kod baharu semasa masa jalan dalam .NET, berpotensi mengubah persamaan yang dimasukkan pengguna menjadi fungsi?
Jawapan:
Ya, adalah mungkin untuk menyusun dan melaksanakan kod baharu pada masa jalan dalam .NET. Ini boleh dicapai dengan memanfaatkan pelbagai kelas dalam ruang nama Microsoft.CSharp, System.CodeDom.Compiler dan System.Reflection.
Pelaksanaan:
Berikut ialah C# yang dipermudahkan aplikasi konsol yang menunjukkan ini kefungsian:
using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Reflection; namespace RuntimeCompilationTest { class Program { static void Main(string[] args) { string sourceCode = @" public class SomeClass { public int Add42(int parameter) { return parameter += 42; } }"; // Define compilation parameters CompilerParameters compParms = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = true }; // Compile the source code using CSharpCodeProvider var csProvider = new CSharpCodeProvider(); CompilerResults compilerResults = csProvider.CompileAssemblyFromSource(compParms, sourceCode); // Create an instance of the compiled class object typeInstance = compilerResults.CompiledAssembly.CreateInstance("SomeClass"); // Get the Add42 method MethodInfo mi = typeInstance.GetType().GetMethod("Add42"); // Invoke the method int methodOutput = (int)mi.Invoke(typeInstance, new object[] { 1 }); // Output the result Console.WriteLine(methodOutput); Console.ReadLine(); } } }
Penjelasan:
Dalam contoh ini, kami mentakrifkan kod sumber untuk hipotesis "SomeClass" kami dengan kaedah "Add42". Menggunakan CSharpCodeProvider, kita boleh menyusun kod sumber dalam ingatan. Setelah disusun, kami mencipta contoh SomeClass dan mendapatkan MethodInfo kaedah Add42. Akhir sekali, kami menggunakan kaedah dan mencetak outputnya, menunjukkan cara kod yang baru disusun boleh dilaksanakan secara dinamik dalam .NET.
Atas ialah kandungan terperinci Bolehkah .NET Menyusun dan Melaksanakan Kod pada Runtime, Mendayakan Penciptaan Fungsi Dinamik daripada Input Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!