首頁 >後端開發 >C++ >C#中如何使用反射呼叫私有方法?

C#中如何使用反射呼叫私有方法?

Susan Sarandon
Susan Sarandon原創
2025-01-25 05:32:13812瀏覽

How Can I Use Reflection in C# to Invoke Private Methods?

使用 C# 反射訪問私有方法

在 C# 中,出於封裝和安全原因,私有方法通常被隱藏。 但是,可能會出現需要在運行時動態調用這些私有方法的情況。 這就是反思的力量發揮作用的地方。

標準 GetMethod() 調用僅檢索公共、受保護和內部方法。要訪問私有方法,您必須使用 GetMethod() 的重載版本並指定正確的 BindingFlags.

解決方案:

關鍵是在 BindingFlags 調用中使用適當的 GetMethod()。 方法如下:

<code class="language-csharp">MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);
dynMethod.Invoke(this, new object[] { methodParams });</code>

此代碼片段檢索私有方法(使用“Draw_”itemType 動態命名),然後使用 dynMethod.Invoke().

調用它

了解 BindingFlags:

BindingFlags 枚舉控制搜索中包含哪些成員。對於私有方法調用,BindingFlags.NonPublicBindingFlags.Instance 至關重要:

  • BindingFlags.NonPublic:此標誌包括非公共成員(私有和受保護)。
  • BindingFlags.Instance:此標誌將搜索限制為實例方法,不包括靜態方法。

有關 BindingFlags 的更多信息:

有關 BindingFlags 枚舉及其各種選項的詳細信息,請參閱 Microsoft 官方文檔 [在此處插入文檔 URL]。

這種方法允許開發人員從同一類實例中動態調用私有方法,從而為類成員的高級運行時操作提供了可能性。

以上是C#中如何使用反射呼叫私有方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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