通过存储在字符串中的名称调用函数
许多编程语言(包括 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中文网其他相关文章!