C# 根据变量的内容调用方法

2023-11-30

如何根据变量的内容调用方法

ex.

String S = "Hello World";
String Format = "ToUpper()";

String sFormat = s.Format;

resulting in "HELLO WORLD"

这样我就可以在其他时间过去Format = "ToLower()"或 Format = "Remove(1,4)" 这将删除从 pos 1 开始的 4 个字符 - 简而言之,我希望能够调用任何字符串方法。

有人可以发布完整的工作解决方案吗?


解决方案的关键要求您使用反射来定位所需的方法。这是一个涵盖您情况的简单示例;

private string DoFormat(string data, string format)
{
    MethodInfo mi = typeof (string).GetMethod(format, new Type[0]);
    if (null == mi)
        throw new Exception(String.Format("Could not find method with name '{0}'", format));

    return mi.Invoke(data, null).ToString();
}

您可以使该方法更加通用,以接受要调用的方法的参数,如下所示。请注意调用 .GetMethod 和 .Invoke 来传递所需参数的方式的更改。

private static string DoFormat(string data, string format, object[] parameters)
{
    Type[] parameterTypes = (from p in parameters select p.GetType()).ToArray();

    MethodInfo mi = typeof(string).GetMethod(format, parameterTypes);
    if (null == mi)
        throw new Exception(String.Format("Could not find method with name '{0}'", format));

    return mi.Invoke(data, parameters).ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 根据变量的内容调用方法 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 使用 Robolectric 和 Dagger 进行 Android 测试

    我正在尝试使用 Dagger 编写 Android 应用程序 为了遵循 TDD 方法 我开始为我的第一个活动编写测试 为了编写测试 我使用 Robolectric 并尝试使用 Mockito 让它在不同的场景中工作 短篇故事 我有一个 An
  • 用多个不同的替换来替换多个不同的出现 - Swift 4.2

    试图找到执行此操作的确切格式 我有一个文本字段用户输入 我想获取该输入并查找多个出现的情况 并将每个唯一出现的情况替换为不同的分别具有独特的性格 i e 代替 example with 1328571 这是我目前拥有的代码 目前只是为单个替
  • Git 分叉实际上是 Git 克隆吗?

    我不断听到人们说他们在 Git 中 fork 代码 Git fork 听起来很像 Git clone 加上一些 无意义的 放弃未来合并的心理意愿 Git 里没有 fork 命令吧 GitHub 通过将信件钉在叉子上 使叉子变得更加真实 也就
  • 未获取格式化形式的 Xml 部分?

    我正在尝试创建一个格式完美的 xml 文件 它包括稍后被替换的元素 输出的格式不完美 xEvent包含一个完整的 xml 模板表单 如字符串 这是最相关的代码 string c2 gt string c
  • 无法在 powershell 中转义管道字符 (|)

    我试图找到文件每一行中管道 字符的数量 我正在使用以下命令来执行此操作 gc test txt select string all matches measure select count 它不包括管道符号 我也尝试过 谁能告诉我如何在 p
  • Facebook 如何解析 blogspot.com 开放图属性

    blogspot com 的某些页面不包含开放图标签 但 Facebook 对象调试器仍然可以正确解析开放图属性 它如何获取开放图信息 例如 我在中没有看到任何开放图元标记http sushiwens blogspot com 源代码 但
  • 导航栏后退按钮重叠

    I am stuck in navigationcontroller Here are screenshots 1 from this page i am initializing paypal sdk I am presenting pa
  • Play框架:包javax.inject不存在

    在我的 Play 2 0 Framework Java 项目中 以下行在 Eclipse 中和 sbt 编译步骤期间都会产生错误 import javax inject 我已经添加了javax inject对我的 build sbt 文件的
  • iOS 8 当键盘出现时将 UIView 向上移动 |问题

    我有一个UIView with a UITextField放置在屏幕底部 当键盘出现时它将向上移动 在 iOS 8 之前我一直遵循以下方法 似乎效果很好 When Keyboard appears void keyboardWillShow
  • 从 64 位代码访问 32 位 DLL

    我需要迁移 32 位 dll 以便在 64 位 C 以及 C 应用程序中使用它 该dll是用非托管delphi代码编写的 我无法重新编译 dll 唯一的方法是使用进程间通信 IPC 我搜索了很长时间 但没有找到太多相关信息 我找到的最好的指
  • OCaml“else”语法错误

    我是第一次学习 OCaml 我遇到了一个非常模糊的 语法错误 的麻烦 定义函数时generateboxes像这样 let rec generateboxes a b if a add1 b then force newline print
  • 两条弧线之间的交点? (弧 = 一对角之间的距离)

    我正在尝试找到一种方法来计算两条弧之间的交点 我需要用它来确定圆弧在视觉上有多少在右半边 有多少在左半边 我考虑创建右半部分的弧 并将其与实际弧相交 但我花了很多时间来解决这个问题 所以我想在这里问 以前肯定有人做过 编辑 很抱歉 当我在处
  • 如何在 C++ 中从二进制文件中删除部分

    我想使用 C 从二进制文件中删除部分 二进制文件大约有 5 10 MB 左右 我想做的事 搜索 ANSI 字符串 something 一旦找到这个字符串 我想删除接下来的n个字节 例如下面的1MB数据 我想删除这些字符 而不是用 NULL
  • Linq to XML(Base64 编码)

    我必须将 PDF 转换为 Base64 编码并将其写入 XML 文件中的元素 我已经得到了 Base64 编码的字符串 很长 很大 但我工作的规范如下 选择此选项是为了确保 XML 文件可以在没有任何潜在风险的情况下显示和验证 由于处理原始
  • 在 Gnome 或 KDE 中以编程方式在桌面上移动应用程序窗口

    我想使用 C 程序在桌面上重新定位应用程序窗口 我应该如何去做 我需要针对这两种情况的解决方案 当我拥有想要移动的应用程序的源时 通过编写外部程序来移动其他应用程序的窗口 外部 Bash 脚本 xdotool search onlyvisi
  • 如何使用c#使用Youtube api登录程序?

    有this文档 可用的 所以我用了 YouTubeRequestSettings settings new YouTubeRequestSettings Appname devkey textBox1 Text textBox2 Text
  • 使用 mkmap 加载地图时显示标题

    我可以在 iphone 应用程序项目中显示地图 并将图钉放置在我想要的位置 但我希望在视图加载时显示标题和副标题 这是我正在使用的代码 我以为放入 mapView selectAnnotation 注释动画 是 会起作用 但事实并非如此 有
  • 在调试时使用反汇编语言在什么情况下有用

    我有以下基本问题 何时我们应该在调试中涉及反汇编 如何解释反汇编 例如下面每个段代表什么 00637CE3 8B 55 08 mov edx dword ptr arItem 00637CE6 52 push edx 00637CE7 6A
  • 在 PHP 中如何清除 WSDL 缓存?

    在通过php info 保存 WSDL 缓存的位置 tmp 但我不一定知道删除所有以 WSDL 开头的文件是否安全 Yes I should能够删除所有内容 tmp 但我不知道如果我删除所有 WSDL 文件还会产生什么影响 您可以安全地删除
  • C# 根据变量的内容调用方法

    如何根据变量的内容调用方法 ex String S Hello World String Format ToUpper String sFormat s Format resulting in HELLO WORLD 这样我就可以在其他时间