Проблема с захватом переменной закрытия в выражении c #
У меня есть функция, которая создает делегат, используя деревья выражений. В этом выражении я использую переменную, захваченную из нескольких параметров, переданных в функцию. Фактическое дерево выражений довольно большое, например:
Delegate GenerateFunction(T current, IList parents) {
var currentExpr = Expression.Parameter(typeof(T), "current");
var parentsExpr = Expression.Parameter(parents.getType(), "parents");
var parameters = new List();
....
return Expression.Lambda(Expression.Block(new List { parentsExpr, currentExpr }, ....), parameters.ToArray()).Compile();
}
Затем я вызываю этот метод из другого метода, прежде чем передать эту функцию другой используемой функции. Как только этовсе сделано, я хочу получить доступ к содержанию родителей, которое обновляется в дереве выражений.
Кажется, что все компилируется, и мое выражение выглядит хорошо, но когда я запускаю его, я появляюсь (хотя я могу 'на самом деле) получить нулевые ссылочные исключения при доступе к родительской переменной (внутри выражения / замыкания).
Я предполагаю, что я'хотел бы знать, если яя делаю что-то не так или это возможно, а также советы для понимания того, чтопродолжается Я неКажется, я не могу найти какие-либо локальные переменные (?) внутри метода, поэтому яИнтересно, онивы вообще в плену?
Спасибо Марк