gpt4 book ai didi

c# - Expression>.Compile() 的反转?

转载 作者:太空狗 更新时间:2023-10-29 18:15:31 25 4
gpt4 key购买 nike

因为我们可以:

Expression<Func<int, bool>> predicate = x => x > 5;
var result = Enumerable.Range(0,10).Where(predicate.Compile());

我怎样才能:

Func<int,bool> predicate = x => x > 5;
Expression<Func<int,bool>> exp = predicate.Decompile();

也就是我要得到Func对应的Expression。可能吗?

最佳答案

没有魔法Decompile()对于 delegate 实例,缺少解构 IL(可能使用 mono.cecil)。如果你想要一个表达式树,你必须从表达式树开始Expression<Func<int, bool>>也是如此。贯穿始终。

作为边缘情况,您可以从委托(delegate)的 .Method 获取基本 方法委托(delegate)信息(MethodInfo)和.Target (arg0) - 但是,对于大多数涉及 lambda 或匿名方法的场景,这将指向捕获类上的编译器生成方法,因此对您的帮助不大。它几乎仅限于以下场景:

Func<string,int> parse = int.Parse;

关于c# - Expression<Func<T,TResult>>.Compile() 的反转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com