Проблема с захватом переменной закрытия в выражении С#C#

Место общения программистов C#
Anonymous
Проблема с захватом переменной закрытия в выражении С#

Сообщение Anonymous »

У меня есть функция, которая создает делегат с использованием деревьев выражений. В этом выражении я использую переменную, полученную из нескольких параметров, переданных в функцию. Реальное дерево выражений довольно велико, поэтому в качестве примера:

Код: Выделить всё

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();
}
Затем я вызываю этот метод из другого метода, прежде чем передать эту функцию другой функции для использования. Как только все это будет сделано, я хочу получить доступ к содержимому родительских элементов, которое обновляется в дереве выражений.
Кажется, все компилируется, и мое выражение выглядит нормально, но когда я его запускаю, оно появляется ( хотя я не могу быть уверен), чтобы получить исключения нулевых ссылок при доступе к переменной родительского кода (внутри выражения/замыкания).
Я не могу найти ни одного поднятого (?) локальные переменные внутри метода, поэтому мне интересно, фиксируются ли они вообще?

Подробнее здесь: https://stackoverflow.com/questions/145 ... expression

Вернуться в «C#»