Прочная функция, проблема GetType() и Type.GetType()C#

Место общения программистов C#
Ответить
Anonymous
 Прочная функция, проблема GetType() и Type.GetType()

Сообщение Anonymous »

У нас есть приложение с устойчивыми функциями, в котором возникла следующая проблема.
Я не могу разместить весь код, а только основные части.
У нас есть абстрактные действия, и список действий хранится в таблице Azure. Чтобы десериализовать их в классы, мы также сохраняем информацию о типе в таблице в виде строки.
Итак, мы получаем такой тип:

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

var myAction = new MyAction();
....

var actionType = myAction.GetType();

var actionTypeForTable = actionType.FullName!;
а затем строка actionTypeForTable сохраняется в таблице.
После этого, когда данные считываются из таблицы, мы используем эту информацию для создания пример действия:

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

var type = Type.GetType(actionTypeForTable);

var action = (MyActionBaseType)Activator.CreateInstance(type)!;
Проблема в том, что когда приложение с устойчивой функцией выполняется локально, на моем компьютере разработчика, строка типа сохраняется в таблице, а затем экземпляр действия создается без проблем.
Но когда приложение-функция развертывается в Azure, оно не может получить тип на основе строки actionTypeForTable. Строка не пуста, есть правильное значение, но результирующий тип имеет значение NULL, поэтому (MyActionBaseType)Activator.CreateInstance(type)!; завершается с ошибкой с исключением нулевого аргумента.
Странно то, что этот код некоторое время назад работал, но теперь начал давать сбой. Мне кажется, что это произошло после переключения движка среды выполнения с dotnet на изолированный от dotnet, но я не уверен.
Классы приложения-функции и действий — это, по сути, разные сборки. Таким образом, приложение-функция ссылается на сборку с классами действий, но в основном во время компиляции оно использует только абстракцию. Может ли быть проблема в том, что приложение-функция по какой-то причине не может загрузить тип на основе имени типа, но только в облаке Azure?

Подробнее здесь: https://stackoverflow.com/questions/784 ... type-issue
Ответить

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

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

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

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

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