首先,我在 .Net 技术方面没有太多经验,特别是过去 7 年以来。
我正在尝试开发一个应用程序,并希望将另一个库 (https://github.com/Giorgi/Math-Expression-Evaluator) 加入其中。
该库允许我评估数学表达式,例如 Evaluate("a+b", a: 1,b: 1)
。方法签名为 public decimal Evaluate(string expression, object argument = null)
- 我想更好地了解 .Net 如何将逗号分隔的参数转换为单个 "argument"。
- 我不确定如何动态创建该参数..例如,通过遍历值列表并创建与该签名相匹配的对象。
我只是在寻找有关文档和更多信息的指针..谢谢。
编辑:对不起..刻意保持宽泛,因为我不是在寻找别人帮我做工作..只是找不到自己研究的起点。
该方法的调用方式如下:
dynamic engine = new ExpressionEvaluator() ;
engine.Evaluate("(c+b)*a", a: 6, b: 4.5, c: 2.6)) ;
在Evalute()函数的主体中,有这段代码(将该参数转换成一个由字符串和十进制数对组成的字典)。
if (argument == null)
{
return new Dictionary<string, decimal>();
}
var argumentType = argument.GetType();
var properties = argumentType.GetProperties(BindingFlags.Instance | BindingFlags.Public)
.Where(p => p.CanRead && IsNumeric(p.PropertyType));
var arguments = properties.ToDictionary(property => property.Name,
property => Convert.ToDecimal(property.GetValue(argument, null)));
return arguments;
我希望能够解析类似于"a:1,b:2"这样的字符串,并将其转换为与Evaluate()函数签名匹配的对象。
Evaluate()
的示例用法与该方法签名完全匹配。 - David