Проблема LINQ: Не удается привести объект типа «Система».Отражение.Модуль системы «для ввода».Отражение.Излучение.Модульный конструктор

#c# #linq

Вопрос:

У меня есть простое лямбда-выражение, которое отлично работает в качестве модульного теста, а также отлично работает, когда я копирую код в основной метод моего приложения. Однако, когда я запускаю тот же фрагмент кода в методе обратного вызова (через курьера JMS), я получаю вышеуказанную ошибку. Кто-нибудь сталкивался с этим?

Пример сбоя кода:

 Expression<Func<JupiterDividend, bool>> expr = v => true;
expr.Compile();  // This is what fails
 

Комментарии:

1. (Отредактировано для правильного отображения кода.)

2. Не могли бы вы, возможно, показать часть дампа стека? Особенно биты вокруг «Выражения». Кроме того, знаете ли вы, делает ли JMS что-нибудь «веселое», например, создание типа «на лету», которое может выбросить гаечный ключ?

Ответ №1:

Обычно вы получаете такого рода ошибку, когда модульный конструктор уже «скомпилирован» или типовой конструктор уже «скомпилирован».

Я бы проверил, где происходят такие вещи. Кроме того, в этом случае может пригодиться трассировка стека.

Ответ №2:

Здесь есть сообщение об ошибке, хотя я не уверен, что это та же проблема, с которой вы столкнулись. По-видимому, это было исправлено в .NET 3.5 с пакетом обновления 1.