Проблема с захватом переменной закрытия в выражении С#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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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