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

如何在 WPF C# 應用程式中執行文字檔案中的程式碼?

Mary-Kate Olsen
發布: 2025-01-07 19:57:41
原創
683 人瀏覽過

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

WPF C# 應用程式中的動態程式碼執行

本文解決了在 WPF C# 應用程式中從外部文字檔案執行程式碼的問題。 包含要執行的程式碼的文字檔案位於應用程式的執行目錄中。

實作

此解決方案結合了程式碼編譯和反射技術。 這個過程涉及即時編譯文字檔案中的程式碼以及隨後從編譯後的程式集中實例化和呼叫目標方法。

以下程式碼片段說明了這種方法:

<code class="language-csharp">// ... code ...

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, sourceCode);

if (results.Errors.Count > 0)
    throw new Exception("Compilation failed!");

object instance = results.CompiledAssembly.CreateInstance("Foo.Bar"); // Assuming the class is named "Bar" in the "Foo" namespace
MethodInfo method = instance.GetType().GetMethod("SayHello"); // Assuming the method is named "SayHello"
method.Invoke(instance, null);</code>
登入後複製

詳細說明

程式碼首先將文字檔案中的 C# 程式碼讀取到字串變數 (sourceCode) 中。 CSharpCodeProvider 使用指定的編譯器選項進行初始化。 CompilerParameters 設定為在記憶體中產生編譯後的程序集,而不建立可執行檔。然後 CompileAssemblyFromSource 方法執行編譯。

錯誤檢查遵循編譯過程。如果編譯成功,則使用 CreateInstance 建立已編譯類別的實例,並使用 GetMethodInvoke 呼叫指定的方法。這允許動態執行外部載入的程式碼。 請注意,命名空間和類別/方法名稱必須與文字檔案中的程式碼相符。 應新增錯誤處理(例如 try-catch 區塊)以確保生產環境中的穩健性。

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

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