我有创建使用表达式树的委托功能。 在这个表达式我使用从在传递给函数的多个参数捕获的变量。 实际表达式树是相当大,从而作为一个例子:
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();
}
然后我传递给函数到另一个函数使用前调用从另一种方法这种方法。 一旦这样做了所有我想要访问的父母它获取的表达式树中更新的内容。
一切似乎编译和我的表情看起来不错,但是当我运行它,我出现(虽然我真的不能肯定)访问的父母,当变量(表达式/闭包)是越来越空引用例外。
我想我想知道如果我做错事或者这是否是可能的,以及对于理解发生了什么事情的提示。 我似乎没有能够找到方法中的任何悬挂(?)的局部变量,所以我想知道是否他们正在拍摄的呢?
谢谢,马克