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 代码可能会损坏内存。