Visual Basic 支持

System.Text.Json 的各个部分使用 System.Text.Json,这些结构不受 Visual Basic 支持。 如果尝试将 System.Text.Json ref 结构 API 与 Visual Basic 结合使用,会收到 BC40000 编译器错误。 错误消息指出问题是已过时 API,但实际问题是编译器不支持 ref 结构。 System.Text.Json 的以下部分在 Visual Basic 中不可用:

  • Utf8JsonReader 结构。 由于 JsonConverter<T>.Read 方法采用参数 Utf8JsonReader,因此此限制意味着不能使用 Visual Basic 编写自定义转换器。 一种解决方法是在 C# 库程序集中实现自定义转换器,然后从 VB 项目引用该程序集。 这假定在 Visual Basic 中执行的所有操作都是将转换器注册到序列化程序。 无法从 Visual Basic 代码调用转换器的 Read 方法。
  • 包含 ReadOnlySpan<T> 类型的其他 API 的重载。 大多数方法包括使用 String 而非 ReadOnlySpan 的重载。

这些限制已实施,因为在没有语言支持的情况下无法安全地使用 ref 结构,即使只是“传递数据”。破坏此错误将导致可能损坏内存的 Visual Basic 代码,因此不应执行。