在 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.NonPublic
和 BindingFlags.Instance
至關重要:
BindingFlags.NonPublic
:此標誌包括非公共成員(私有和受保護)。 BindingFlags.Instance
:此標誌將搜索限制為實例方法,不包括靜態方法。 有關 BindingFlags
枚舉及其各種選項的詳細信息,請參閱 Microsoft 官方文檔 [在此處插入文檔 URL]。
這種方法允許開發人員從同一類實例中動態調用私有方法,從而為類成員的高級運行時操作提供了可能性。
以上是C#中如何使用反射呼叫私有方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!