Поделиться через


Поддержка Visual Basic

Части System.Text.Json используют структуры ссылок, которые не поддерживаются Visual Basic. Если вы пытаетесь использовать System.Text.Json API структуры ссылок с Visual Basic, вы получите BC40000 ошибки компилятора. Сообщение об ошибке указывает, что проблема в устаревшем API, но фактическая проблема заключается в отсутствии поддержки ref struct в компиляторе. Следующие части System.Text.Json не доступны для использования из Visual Basic:

  • Структура Utf8JsonReader. JsonConverter<T>.Read Так как метод принимает Utf8JsonReader параметр, это ограничение означает, что вы не можете использовать Visual Basic для записи пользовательских преобразователей. Это позволяет реализовать пользовательские преобразователи в сборке библиотеки C# и ссылаться на эту сборку из проекта VB. Предполагается, что все, что вы делаете в Visual Basic, это регистрация преобразователей в сериализаторе. Нельзя вызывать методы Read преобразователей из кода Visual Basic.
  • Перегрузки других API, содержащие тип ReadOnlySpan<T>. В большинстве методов перегрузки используют String вместо ReadOnlySpan.

Эти ограничения установлены, так как ref structs не могут использоваться безопасно без поддержки языка, даже если это просто «передача данных». Не следует пытаться обойти эту ошибку. Если это сделать, код Visual Basic может повредить память.