我有一个使用表达式树创建委托的函数。在这个表达式中,我使用从传递给函数的多个参数中捕获的变量。实际的表达式树相当大,例如:
Delegate GenerateFunction<T>(T current, IList<T> parents) {
var currentExpr = Expression.Parameter(typeof(T), "current");
var parentsExpr = Expression.Parameter(parents.getType(), "parents");
var parameters = new List<ParameterExpression>();
....
return Expression.Lambda(Expression.Block(new List<ParameterExpression> { parentsExpr, currentExpr }, ....), parameters.ToArray()).Compile();
}
然后我从另一个方法调用这个方法,然后将该函数传递给另一个函数以使用。完成后,我想访问在表达式树中更新的父母的内容。
一切似乎都可以编译,我的表达式看起来还不错,但是当我运行它时,我似乎(虽然我不能确定)在访问父变量(在表达式/闭包内)时出现空引用异常。
我想我想知道我是否做错了什么或者这是否可能以及了解正在发生的事情的提示。我似乎无法在方法中找到任何提升的(?)局部变量,所以我想知道它们是否被捕获了?
谢谢,马克