这是我第一次使用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软件包后,问题已解决。
答案 0 :(得分:1)
似乎框架站点上的示例已过时或完全错误。
他们的API documentation是最新的。
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`