c# - 调用带有参数作为字符串的函数
问题描述
我需要调用一个带有参数作为字符串的函数。看看下面给出的例子: 注意用 ."method(parameter1,parameter2)"
括起来""
。
string methodName = "method(3,4)"
string f = methodName ;
public string method(int one, int two){
return "hi";
}
以上是预期的结果。我将调用一个带有字符串方法名称的函数,后面跟着它的参数:
到目前为止我已经尝试过:
我曾尝试使用反射,但它没有调用该方法。
我怎样才能解决这个问题 ?
有没有其他方法可以做到这一点?
Type type = typeof(MyClass);
var method = type.GetMethod("method");
MyClass cc = new MyClass();
string re= (string) method.Invoke(cc, new object[] {1,3});
解决方案
这是一个如何使用反射调用方法的示例。
如果要将方法的输入作为字符串的一部分处理,则必须在调用方法时解析字符串的该部分并将值作为对象数组中的实例传递。
class Program
{
static void Main(string[] args)
{
var m = typeof(Program).GetMethod("PrintValue");
var i = new Program();
m.Invoke(i, BindingFlags.Default, null, new object[] {42}, CultureInfo.CurrentCulture);
}
public void PrintValue(int i)
{
Console.WriteLine(i);
}
}
推荐阅读
- json - T-SQL JSON_MODIFY 错误:参数数据类型唯一标识符(日期时间、金钱等)无效
- java - 从服务类执行firebase身份验证?
- perl - 从另一个文件调用一个文件会给出打印值而不是 perl 中的返回值
- c# - 匹配 url 末尾的模式的 C# 正则表达式
- asp.net-core - 如何在 dev express 中向表单字段添加动态验证规则
- hibernate - jpa 2、使用类型sage查询,避免查询嵌套实体
- php - session_start() 未能解码会话对象。会话已被破坏错误
- php - 将数据推送到存储在另一个数组中的数组中
- jquery - 数据表,固定标题显示在屏幕底部
- css - Cloudfront 域名无法使用 S3、Cloudfront 和 Route 53 将 HTTP 重定向到 HTTPS