使用反射呼叫靜態方法
反射提供了一種強大的機制,用於在運行時存取和操作.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中文網其他相關文章!