Partage 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 System.Text.Json ref struct avec Visual Basic, vous obtiendrez des erreurs de compilation 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 *ref structs* ne peuvent pas être utilisées en toute sécurité sans support linguistique, même si c'est simplement pour « transférer des données ». Vous ne devez pas contourner cette erreur. Si vous le faites, votre code Visual Basic peut corrompre la mémoire.