Rumah > pembangunan bahagian belakang > C++ > Bolehkah .NET Menyusun dan Melaksanakan Kod pada Runtime, Mendayakan Penciptaan Fungsi Dinamik daripada Input Pengguna?

Bolehkah .NET Menyusun dan Melaksanakan Kod pada Runtime, Mendayakan Penciptaan Fungsi Dinamik daripada Input Pengguna?

Mary-Kate Olsen
Lepaskan: 2025-01-02 12:39:39
asal
136 orang telah melayarinya

Can .NET Compile and Execute Code at Runtime, Enabling Dynamic Function Creation from User Input?

Kompilasi Kod Dinamik dalam .NET

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();
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan