通過存儲在字符串中的名稱調用函數
許多編程語言(包括 PHP)都允許通過字符串引用動態調用函數。 C# 提供豐富的反射功能,因此 .NET 框架中也可以實現此功能。
使用反射進行動態函數調用
要在 C# 中調用由字符串標識的函數,可以使用反射。以下代碼片段演示瞭如何實現:
<code class="language-csharp">Type thisType = this.GetType(); MethodInfo theMethod = thisType.GetMethod(TheCommandString); theMethod.Invoke(this, userParameters);</code>
在此代碼中,要調用的方法的名稱存儲在變量 TheCommandString
中。通過獲取當前對象的 Type
實例 (thisType
),GetMethod
方法用於根據名稱獲取對方法的引用。最後,Invoke
方法用於執行方法,傳入目標對象 (this) 和任何必要的參數 (userParameters)。
訪問私有方法
需要注意的是,要調用的方法必須在反射操作的上下文中可訪問。默認情況下,使用私有訪問修飾符的方法無法使用這種方法訪問。要解決此問題,可以在 GetMethod
調用中包含 BindingFlags
參數,如下所示:
<code class="language-csharp">MethodInfo theMethod = thisType .GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);</code>
通過此修改,指定了 NonPublic
和 Instance
綁定標誌,允許調用方法,而不管其訪問修飾符如何。
以上是如何使用儲存為字串的名稱來呼叫 C# 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!