Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Kod C# Secara Dinamik daripada Fail dalam Aplikasi WPF?

Bagaimanakah Saya Boleh Melaksanakan Kod C# Secara Dinamik daripada Fail dalam Aplikasi WPF?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 19:37:42557semak imbas

How Can I Dynamically Execute C# Code from a File in a WPF Application?

Pelaksanaan dinamik fail kod C#

Soalan:

Aplikasi WPF C# anda disertakan dengan butang yang perlu melaksanakan kod yang disimpan dalam fail teks berasingan dalam direktori masa jalan aplikasi.

Penyelesaian:

Untuk melaksanakan kod secara dinamik dalam fail teks, ikut langkah berikut:

  1. Kompilasi kod: Gunakan pengkompil C# (seperti CSharpCodeProvider) untuk menyusun kod dalam fail teks ke dalam perhimpunan.
  2. Buat contoh himpunan tersusun: Gunakan kaedah CreateInstance() kelas System.Reflection.Assembly untuk mencipta tika perhimpunan tersusun.
  3. Memajukan kaedah: Gunakan kaedah GetMethod() dan Invoke() bagi kelas System.Reflection.Type untuk menggunakan kaedah yang diingini pada contoh.

Berikut ialah contoh kod tentang cara melaksanakan kaedah kelas yang disusun secara dinamik:

<code class="language-csharp">using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Net;
using Microsoft.CSharp;
using System.CodeDom.Compiler;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string source =
            @"
namespace Foo
{
    public class Bar
    {
        public void SayHello()
        {
            System.Console.WriteLine(""Hello World"");
        }
    }
}
            ";

            Dictionary<string, string> providerOptions = new Dictionary<string, string>
                {
                    {"CompilerVersion", "v3.5"}
                };
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);

            CompilerParameters compilerParams = new CompilerParameters
                {GenerateInMemory = true,
                 GenerateExecutable = false};

            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);

            if (results.Errors.Count != 0)
                throw new Exception("编译失败!");

            object o = results.CompiledAssembly.CreateInstance("Foo.Bar");
            MethodInfo mi = o.GetType().GetMethod("SayHello");
            mi.Invoke(o, null);
        }
    }
}</code>

Mengikut langkah ini, anda boleh melaksanakan kod C# secara dinamik daripada fail kod dalam aplikasi WPF.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kod C# Secara Dinamik daripada Fail dalam Aplikasi WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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