c# - LINQ 表达式:Nreco 框架给出编译错误
问题描述
这是我第一次使用 nuget,我正在尝试从NRecoFramework编译一个动态 lambda 解析器示例,如下所示:
var lambdaParser = new NReco.LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["one"] = 1M;
varContext["two"] = "2";
Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`
但是当我尝试编译时,该LamdaParser()
方法无法识别。
我已经将 nuget 和 nreco 框架导入到 VisualStudio2017,但它仍然无法编译。
解决了
我的错,问题是我已经导入了Nreco Package和 Nreco.LambdaParser Package,因为我无法编译的两个包中的 LamdaParser() 方法都退出了。删除 Nreco.LamdaParser 包后,问题就解决了。
解决方案
框架站点上的示例似乎已过时或完全错误。
他们的API 文档是最新的。
LambdaParser
是在命名NReco.Linq
空间中。您需要将代码更改为:
var lambdaParser = new NReco.Linq.LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["one"] = 1M;
varContext["two"] = "2";
Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`
或者,由于您的文件中有using NReco.Linq;
声明,您还可以编写:
var lambdaParser = new LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["one"] = 1M;
varContext["two"] = "2";
Console.WriteLine(lambdaParser.Eval("two>one && 0<one ? (1+8)/3+1*two : 0", varContext)); // --> 5`
推荐阅读
- java - 我需要形成一个循环来读取调查问题的答案并将它们存储在二维数组中
- c++ - c++ - 在c ++中使用map的第二个参数上的类中的方法时出错
- linux - Unix: 'su user' 不工作并且在 SSH 中保持 root 如果条件
- nvidia - NVidia RTX Voice,输入 wav 文件而不是麦克风
- scheme - 在 DrRacket 调试器中查看有关环境的信息
- c# - 处理和处置废弃任务 c# .NET
- javascript - 如何将值从一个网页传递到另一个网页
- typescript - Is it possible to infer a type for a tuple, where element's type depends on the previous?
- javascript - How can I loop through multiple instances of a JS component
- java - Gradle/Maven deploy to github packages - Preserving parameter/argument names