首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明式构建以任何类型节点为根的表达式树。

声明式构建以任何类型节点为根的表达式树。
EN

Stack Overflow用户
提问于 2009-09-15 14:06:09
回答 1查看 118关注 0票数 0

MSDN说:

编译器还可以为您构建表达式树。编译器生成的表达式树总是根植于类型表达式的节点中;也就是说,它的根节点表示lambda表达式。

但是,如果我想构建一个根植于MethodCallExpression、BinaryExpression等类型节点的表达式树呢?也不想手动这么做。

EN

回答 1

Stack Overflow用户

发布于 2009-09-15 14:06:51

解决方法是声明2个助手函数。

代码语言:javascript
复制
public Expression GetBody(Expression<Action> lambda)
{
    return lambda.Body;
}

public Expression GetBody<TResult>(Expression<Func<TResult>> lambda)
{
    return lambda.Body;
}

用法示例:

代码语言:javascript
复制
var e1 = (MethodCallExpression)GetBody(() => this.FunA());
var e2 = (ConstantExpression)GetBody(() => 4 + 5);
var e3 = (BinaryExpression)GetBody(() => a + b);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1427399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档