问题标签 [dynamic-expresso]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1781 浏览

c# - 带有 lambda 的动态 expresso foreach?

我正在使用 Dynamic-Expresso 库。我想评估包含 foreach 语句的表达式。那可能吗?我能看到的唯一方法是编写参数化方法并将整个类作为参数发送给解释器

0 投票
2 回答
509 浏览

dynamic-expresso - 在 expresso 中使用动态类型

我想使用动态值作为参数。例如

但是我收到一条错误消息,提示“'ExpandoObject' 类型中不存在属性或字段 'Foo'”?

这应该是可能的吗?

问候,尼尔斯

0 投票
1 回答
905 浏览

dynamic-expresso - 能够设置表达式的上下文

有没有办法在Dynamic Expresso library中设置表达式的上下文,以便我们可以执行以下操作:

而不是

也许我们可以有另一种选择,即第一个参数将用作表达式的上下文。

我想可能还有另一种版本的 Parse 和 Eval 方法,它们只接受表达式文本和一个简单的对象值作为表达式上下文。

除此之外,还缺乏对动态类型的支持,我真的很喜欢这个库。我曾经做过类似的工作,但没有添加对扩展方法和通用方法调用的支持。

感谢伟大的图书馆,尼尔

0 投票
1 回答
163 浏览

dynamic-expresso - DynamicExpresso Eval 内存泄漏

在这样的简单表达式评估中是否有避免内存泄漏的解决方案?

我在具有 Mono(5.0.1.1)的 Linux 机器上的 WinForm 应用程序中定期运行此代码,并且内存使用量不断增加。在 Windows 上测试,Process.WorkingSet64 的增长速度低于 Linux。GC.GetTotalMemory 始终是稳定的。

0 投票
2 回答
293 浏览

c# - 将包含特定标识符的数组解析为表达式

我正在使用字符串表达式构建动态 lamda 表达式 ParseAsExpression。问题是我无法弄清楚如何解析一个数组的表达式包含一个像这样的对象mylist.Contains(x.Id)

完整示例

0 投票
0 回答
39 浏览

dynamic-expresso - 在动态表达式中解析科学记数法

只是想知道为什么没有实现科学计数法的解析。我能够使用正则表达式添加一些简单的函数。代码会在计算之前清理表达式字符串以用双字符串替换科学表达式值。例如)“SomeVar<=5.5e-3”变为:“SomeVar<=0.0055”“SomeOtherVar>=-9.9E4”变为:“SomeOtherVar>=-99000”

如果有人感兴趣,我会添加它。

0 投票
1 回答
515 浏览

c# - DynamicExpresso.SetFunction 不适用于方法重载

我正在使用Dynamic Expresso进行表达式评估,并且效果很好。实际上设置了自定义函数,但似乎方法重载有问题。

我实际上有两种Round方法:

第一个有一个论点:

第二个有两个参数:

代表被宣布并且Interpreter.SetFunction被调用并且没有错误:

变量已正确传递,我已经多次检查过我传递的参数实际上是一个decimal.

我通过的求值表达式,最后包含以下字符串,它没有错,因为Interpreter.SetVariable(property.Key, property.Value)插入了 an"ImporteTotal"和 a 666.66

因此,评估完成后我得到的例外是:

参数列表与委托表达式不兼容(在索引 0 处)。

请注意,我实际上设置了许多使用偶数、 DateTimes intstrings 等甚至组合的函数,以及重载!它们都工作得很好,但似乎删除任何这些重载有助于它工作。如果它们都在 Dynamic Expresso 上“导入”,它会抱怨。

有任何想法吗?

非常感谢。

更新编辑:

我查看了UnitTesting 通过 pastebin 提供的 Davide,似乎我失败了。

这个单元测试似乎失败了。

0 投票
1 回答
231 浏览

dynamic-expresso - 解析表达式中的动态参数

了解我的情况的快速示例:

换句话说,有没有办法将一些动态参数传递给 Parse 方法,然后得到一个接受这些参数的函子?

0 投票
1 回答
386 浏览

c# - DynamicExpresso : 表达式作为变量

假设我们有一个名为 TOTAL 的变量,它应该替换为 CClass 的 AProperty + BProperty。我有一组 IQueryrable 的 CClass 对象,我想从这个集合中选择 (TOTAL + AProperty)。

AProperty 和 BProperty 是双精度值。我不想扩展我的类,因为它是我的数据库中的一个实体类,实际上 TOTAL 表达式是一个运行时、用户定义的变量。所以我不想通过反射或其他一些解决方案注入它们。我想让最终用户能够声明一些类似 MACRO 的变量,以基于它们创建更复杂的表达式。

有什么方法可以根据上述情况为我的解释器定义 TOTAL 表达式?

0 投票
0 回答
192 浏览

dynamic-expresso - 如何将动态变量与匿名类型一起使用?

我正在尝试使用包含匿名类型的动态变量。例如:

但是,我得到了错误

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“对象”不包含“法语”的定义

显然, xa 没有正确的类型?如果我引入一个命名类,翻译,并将第一行更改为

它按预期工作。如果我通过替换第 2 行和第 3 行来替换 make x 和 hello 匿名,它也可以工作

或者如果我让 x 和 hello 都动态化。

如果我使 x 匿名和 hello 动态,它也会失败:

在这里,我得到了错误

DynamicExpresso.Exceptions.ParseException:“对象”类型中不存在“法语”属性或字段

有什么方法可以让我的第一个代码示例工作?在现实生活中,我正在尝试一些更复杂的东西。

我在尝试访问数组时也遇到了问题: