Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh menyusun dan melaksanakan serpihan kod C#?

Bagaimanakah saya boleh menyusun dan melaksanakan serpihan kod C#?

Patricia Arquette
Lepaskan: 2025-02-01 14:26:09
asal
621 orang telah melayarinya

How Can I Dynamically Compile and Execute C# Code Fragments?

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>
Salin selepas log masuk
dan

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!

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