首页 >后端开发 >C++ >如何使用将其名称存储为字符串来调用C#函数?

如何使用将其名称存储为字符串来调用C#函数?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-26 02:11:08297浏览

How Can I Call a C# Function Using Its Name Stored as a String?

通过存储在字符串中的名称调用函数

许多编程语言(包括 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>

通过此修改,指定了 NonPublicInstance 绑定标志,允许调用方法,而不管其访问修饰符如何。

以上是如何使用将其名称存储为字符串来调用C#函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn