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

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

Patricia Arquette
發布: 2024-12-29 22:17:27
原創
427 人瀏覽過

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中文網其他相關文章!

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