表达式树深度限制

我正面临一个问题,试图在Expression <Func >类型的LambdaExpression上调用Compile(),其深度大约为400.较小的值不会导致任何问题。 我找不到任何关于这种限制的事情。 任何人都可以澄清这个吗? 我可以增加这个限额吗?

upd:对不起,忘了提,我得到了StackOverflowException:

System.Core.dll中出现未处理的“System.StackOverflowException”类型exception{无法计算表达式,因为当前线程处于堆栈溢出状态。}

你是合法地限制堆栈大小(虽然我质疑400多项lambda的智慧)。 绕过它的最简单方法是使用以堆栈大小为参数的线程构造函数创建一个专门用于使用更大堆栈执行此编译的新线程: http : //msdn.microsoft.com/en-us/library /ms149581.aspx

在该线程中调用compile并根据需要增加堆栈大小参数。 我相信这是以字节为单位,这将使默认值大约为1048576,所以从那里开始并根据需要提高它。