首頁 > 後端開發 > C++ > 如何從 WPF 應用程式中的檔案動態執行 C# 程式碼?

如何從 WPF 應用程式中的檔案動態執行 C# 程式碼?

Patricia Arquette
發布: 2025-01-07 19:37:42
原創
615 人瀏覽過

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

動態執行C#程式碼檔案

問題:

您的WPF C#應用程式附帶一個按鈕,需要執行儲存在應用程式運行時目錄中單獨文字檔案中的程式碼。

解:

要動態執行文字檔案中的程式碼,請依照下列步驟操作:

  1. 編譯程式碼: 使用C#編譯器(例如CSharpCodeProvider)將文字檔案中的程式碼編譯為組件。
  2. 建立已編譯組件的實例: 使用System.Reflection.Assembly類別的CreateInstance()方法建立已編譯組件的實例。
  3. 呼叫方法: 使用System.Reflection.Type類別的GetMethod()和Invoke()方法呼叫實例上的所需方法。

以下是如何執行動態編譯的類別方法的範例程式碼:

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);
        }
    }
}
登入後複製

按照這些步驟,您可以在WPF應用程式中動態執行來自程式碼檔案的C#程式碼。

以上是如何從 WPF 應用程式中的檔案動態執行 C# 程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板