Rumah >pembangunan bahagian belakang >C++ >Bolehkah .NET Menyusun dan Menjalankan Kod Secara Dinamik pada Runtime?
Bolehkah kita Menjana Kod Baharu dan Menjalankannya on-the-Fly dalam .NET?
Anda ingin memperkasakan pengguna untuk memasukkan persamaan ke dalam kotak teks dan minta ia digunakan pada titik data masuk. Walaupun menghuraikan teks persamaan untuk setiap pengiraan adalah pendekatan awal anda, anda mencari penyelesaian yang lebih cekap: menyusun persamaan menjadi fungsi pada masa jalan.
Dalam .NET, ini sememangnya boleh dilakukan menggunakan teknik yang terdapat dalam Microsoft. Ruang nama CSharp, System.CodeDom.Compiler dan System.Reflection. Aplikasi konsol ringkas boleh menggambarkan konsep ini:
using Microsoft.CSharp; using System; using System.CodeDom.Compiler; using System.Reflection; namespace RuntimeCompilationTest { class Program { static void Main(string[] args) { // Define the source code for the SomeClass class string sourceCode = @" public class SomeClass { public int Add42 (int parameter) { return parameter += 42; } }"; // Set up compilation parameters var compParms = new CompilerParameters{ GenerateExecutable = false, GenerateInMemory = true }; // Create a C# code provider var csProvider = new CSharpCodeProvider(); // Compile the source code CompilerResults compilerResults = csProvider.CompileAssemblyFromSource(compParms, sourceCode); // Create an instance of the SomeClass type object typeInstance = compilerResults.CompiledAssembly.CreateInstance("SomeClass"); // Get the Add42 method MethodInfo mi = typeInstance.GetType().GetMethod("Add42"); // Invoke the Add42 method and display the output int methodOutput = (int)mi.Invoke(typeInstance, new object[] { 1 }); Console.WriteLine(methodOutput); Console.ReadLine(); } } }
Dalam kod ini:
Demonstrasi ini mempamerkan keupayaan untuk menyusun dan melaksanakan kod baharu secara dinamik dalam .NET.
Atas ialah kandungan terperinci Bolehkah .NET Menyusun dan Menjalankan Kod Secara Dinamik pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!