首頁 > 後端開發 > C++ > 如何在 C# 中使用反射來呼叫名稱為字串的類別的靜態方法?

如何在 C# 中使用反射來呼叫名稱為字串的類別的靜態方法?

Linda Hamilton
發布: 2025-01-14 11:18:43
原創
753 人瀏覽過

How Can I Use Reflection in C# to Invoke a Static Method on a Class Given Its Name as a String?

透過反射動態存取和呼叫靜態 C# 方法

假設您有一個儲存為字串的類別名稱(例如“MyClass”)並且需要呼叫其靜態方法之一。 反射提供了實現這種動態行為的機制。本指南示範如何使用反射從字串名稱中檢索類別引用,然後呼叫靜態方法。

使用 Type.GetType 進行類別檢索

Type.GetType方法是動態存取類別的關鍵。 它將完全限定的類別名稱作為字串並傳回表示該類別的 Type 物件:

<code class="language-csharp">Type classType = Type.GetType("MyClass"); </code>
登入後複製

使用反射的方法呼叫

一旦有了 Type 對象,您就可以使用 GetMethod 來取得表示您希望呼叫的靜態方法的 MethodInfo 物件:

<code class="language-csharp">MethodInfo methodInfo = classType.GetMethod("MyStaticMethod", BindingFlags.Static | BindingFlags.Public);</code>
登入後複製

這將檢索名為「MyStaticMethod」的方法,確保它是公用靜態方法。 BindingFlags 指定搜尋條件。

最後,使用 Invoke 呼叫此方法:

<code class="language-csharp">methodInfo.Invoke(null, null); // null for static method, null for no parameters</code>
登入後複製

對於帶有參數的方法,將物件陣列作為第二個參數傳遞給Invoke

重要注意事項:

  • 組件載入: 確保包含該類別的組件已載入到應用程式域中。
  • 錯誤處理: 將反射調用包裝在 try-catch 區塊中以處理潛在的異常(例如,TypeLoadExceptionMethodNotFoundException)。
  • 存取修飾符: 尊重類別及其方法的存取修飾符(公有、私有等)。 您可能需要相應地調整 BindingFlags

透過採用這些技術,您可以釋放 C# 中動態方法呼叫的強大功能,從而實現靈活且適應性強的應用程式。

以上是如何在 C# 中使用反射來呼叫名稱為字串的類別的靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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