Share via


Prise en charge dans Visual Basic

Des parties de System.Text.Json utilisent des structs ref, qui ne sont pas pris en charge par Visual Basic. Si vous essayez d’utiliser des API ref struct System.Text.Json avec Visual Basic, vous obtenez des erreurs du compilateur BC40000. Le message d’erreur indique que le problème est une API obsolète, mais que le problème réel est l’absence de prise en charge du struct ref dans le compilateur. Les parties suivantes de System.Text.Json ne sont pas utilisables à partir de Visual Basic :

  • Struct Utf8JsonReader. Étant donné que la méthode JsonConverter<T>.Read accepte un paramètre Utf8JsonReader, cette limitation signifie que vous ne pouvez pas utiliser Visual Basic pour écrire des convertisseurs personnalisés. Une solution de contournement consiste à implémenter des convertisseurs personnalisés dans un assembly de bibliothèque C# et à référencer cet assembly à partir de votre projet VB. Cela suppose que tout ce que vous faites dans Visual Basic, c’est d’inscrire les convertisseurs dans le sérialiseur. Vous ne pouvez pas appeler les méthodes Read des convertisseurs à partir du code Visual Basic.
  • Surcharges d’autres API qui incluent un type ReadOnlySpan<T>. La plupart des méthodes incluent des surcharges qui utilisent String au lieu de ReadOnlySpan.

Ces restrictions sont en place, car les structs ref ne peuvent pas être utilisés en toute sécurité sans prise en charge du langage, même en cas de « transmission de données ». L’action de subvertir cette erreur entraîne un code Visual Basic qui peut endommager la mémoire et ne doit pas être effectuée.