首頁 >後端開發 >C++ >C#中如何使用反射呼叫特定命名空間中的靜態方法?

C#中如何使用反射呼叫特定命名空間中的靜態方法?

Patricia Arquette
Patricia Arquette原創
2024-12-29 22:17:27432瀏覽

How Can I Invoke Static Methods in a Specific Namespace Using Reflection in C#?

使用反射呼叫靜態方法

反射提供了一種強大的機制,用於在運行時存取和操作.NET 類型及其成員。其中一項任務是呼叫類別的靜態方法。本文解決了使用反射在特定命名空間 (mySolution.Macros) 中呼叫靜態方法的特定需求。

背景

在提供的程式碼片段中,目標是迭代特定命名空間中的靜態類別列表並呼叫它們的 Run 方法。但是,由於方法是靜態的,因此建立實例然後呼叫方法的標準方法不適用。

呼叫靜態方法的關鍵反射是為了了解傳遞給 MethodInfo.Invoke 的第一個參數對於靜態方法將被忽略。因此,下面修改後的程式碼成功地呼叫了靜態方法:

foreach (var tempClass in macroClasses)
{
    // using reflection I will be able to run the method as:
    tempClass.GetMethod("Run").Invoke(null, null);
}

正如評論中提到的,在調用GetMethod 之前確保該方法確實是靜態的是一個很好的做法:

tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);

以上是C#中如何使用反射呼叫特定命名空間中的靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn