问题标签 [expression-trees]

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 投票
4 回答
3305 浏览

c# - 通过 Linq 表达式树识别事件

当事件没有出现在 a+=或 a旁边时,编译器通常会阻塞-=,所以我不确定这是否可能。

我希望能够通过使用表达式树来识别事件,因此我可以为测试创建事件观察器。语法看起来像这样:

我的问题是双重的:

  1. 编译器会窒息吗?如果是这样,关于如何防止这种情况的任何建议?
  2. 如何从构造函数解析 Expression 对象以附加到MyEventToWatch事件target
0 投票
19 回答
20951 浏览

c# - Try-catch 每一行代码,无需单独的 try-catch 块

我目前没有这个问题,但你永远不知道,思想实验总是很有趣。

忽略你的架构甚至尝试这样做的明显问题,让我们假设你有一些别人设计的可怕编写的代码,并且你需要在相同的代码中执行大量广泛而多样的操作块,例如:

乘以一百。其中一些可能有效,另一些可能会出错。您需要的是与“on error resume next”等效的 C#,否则您最终将在多行代码周围复制和粘贴 try-catch。

你会如何尝试解决这个问题?

0 投票
3 回答
2462 浏览

c# - 关于 C# 表达式树的建议

我正在研究一种接受表达式树作为参数的方法,以及类的类型(或实例)。

基本思想是,此方法会将某些内容添加到将用于验证的集合中。

该方法调用如下:

我这样做是因为我希望传入的属性名称是强类型的。

我正在努力解决的几件事..

  1. 在 DoSomething 中,我想获取PropertyInfoT 的类型(从传入的主体)并将其与 rule[] 一起添加到集合中。目前,我正在考虑使用 expression.Body 并从“Convert.([propertyname])”中删除 [propertyname] 并使用反射来获得我需要的东西。这看起来既麻烦又错误。有没有更好的办法?
  2. 这是我正在使用的特定模式吗?
  3. 最后,感谢任何关于我对我正在做的事情的误解的建议或澄清和/或 C# 表达式树的资源或良好信息。

谢谢!

伊恩

编辑:

DoSomething 方法中返回的一个示例expression.Body.ToString()是包含“Convert(t.MyProperty)”的字符串(如果从上面的示例调用)。

我确实需要它是强类型的,所以如果我更改属性名称它不会编译。

感谢您的建议!

0 投票
5 回答
7186 浏览

linq - .NET 3.5 表达式树中的赋值

是否可以将赋值编码为表达式树?

0 投票
7 回答
44144 浏览

c# - 在 C# 中序列化和反序列化表达式树

有没有办法在 C# 中反序列化表达式,我想将表达式存储在数据库中并在运行时加载它们。

0 投票
3 回答
4101 浏览

c# - 如何构建与通用对象进行比较的 Linq 表达式树?

我有一个 IQueryable 和一个 T 类型的对象。

我想做 IQueryable().Where(o => o.GetProperty(fieldName) == objectOfTypeT.GetProperty(fieldName))

所以 ...

仅供参考,GetProperty 不是有效函数。我需要执行此功能的东西。

我是周五下午的大脑融化了还是这是一件复杂的事情?


objectOfTypeT 我可以执行以下操作...

效果很好,现在我只需要第二部分:

return SomeIQueryable().Where(o => o.GetProperty(fieldName) == matchValue);

0 投票
4 回答
16169 浏览

c# - Lambda 表达式树解析

我正在尝试在项目中使用 Lambda 表达式来映射到第三方查询 API。所以,我正在手动解析表达式树。

如果我传入一个 lambda 表达式,例如:

一切正常。

但是,如果我的 lambda 表达式看起来像:

使用 .NET 调试器,我看不到该功能的实际价值。相反,我看到了类似的东西:

是什么赋予了?当我尝试将表达式的右侧作为字符串抓取时,我得到(value(ASP.usercontrols_myaspusercontrol_ascx).myaspdropdown.SelectedValue)的不是实际值。我如何获得实际价值?

0 投票
2 回答
9741 浏览

c# - 给定一个 ExpressionType.MemberAccess 类型,我如何获取字段值?

我正在解析一个表达式树。给定 ExpressionType.MemberAccess 的 NodeType,我如何获取该字段的值?

来自 C# MSDN 文档:MemberAccess 是表示从字段或属性读取的节点。

一个代码片段会非常非常有用。提前致谢!!!

我的代码看起来像这样:

0 投票
4 回答
1361 浏览

.net - LINQ 表达式树图灵完备吗?

正如他们在.Net 3.5中一样。我知道它们在 4.0 中,因为这就是 DLR 的工作方式,但我对我们现在拥有的版本感兴趣。

0 投票
2 回答
700 浏览

c# - 继承期间的表达式推断

我有以下代码:

我收到此编译器错误消息:

如果我将对 FigureItOut 的调用更改为:

然后它工作。有没有办法通过更改基类来编译第一个示例?

我知道如果我将整个 Base 类设为通用,如下所示:

然后它可以工作,但我宁愿不这样做,任何其他可以使用的黑客,也许在方法级别(即以某种方式更改 FigureItOut)。