透過反射呼叫靜態方法
在 .NET 中,提供實用程式或擴充方法的靜態類別很常見。問題出現了:我們如何使用反射來呼叫這些靜態方法?
如提供的程式碼片段所示,可以使用反射來實例化和呼叫非靜態方法。但是,在處理靜態方法時,需要採用替代方法。
關鍵在於理解靜態方法會忽略 MethodInfo.Invoke 方法的第一個參數。因此,我們可以簡單地傳遞 null 作為第一個參數,而不是建立類別的實例。
這是一個更新的程式碼區塊,示範如何使用反射呼叫靜態方法:
foreach (var tempClass in macroClasses) { // Call the static "Run" method using reflection tempClass.GetMethod("Run").Invoke(null, null); }
為了增加安全性,您可能想要在呼叫 GetMethod時確保該方法確實是靜態的:
tempClass.GetMethod("Run", BindingFlags.Public | BindingFlags.Static).Invoke(null, null);
透過使用此方法,您可以呼叫任何靜態方法從指定命名空間運行方法,提供一種靈活的方式來執行巨集或實用函數,而不需要直接類別實例化。
以上是如何在 .NET 中使用反射呼叫靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!