Condividi tramite


Alcuni parametri dei tipi derivati da Stream vengono rinominati

In .NET 6 alcuni parametri dei metodi sui tipi derivati da System.IO.Stream sono stati rinominati in modo che corrispondano alla classe di base.

Descrizione delle modifiche

Nelle versioni precedenti di .NET diversi tipi sono derivati dai metodi di override Stream, ma usano nomi di parametri diversi rispetto a quelli usati dal tipo di base. Ad esempio, il parametro della matrice di byte di DeflateStream.Read(Byte[], Int32, Int32) viene denominato array mentre l'argomento corrispondente nel metodo della classe base è denominato buffer.

In .NET 6, tutti i tipi che derivano da System.IO.Stream che avevano nomi di parametri non corrispondenti sono stati portati in conformità con il tipo di base usando gli stessi nomi di parametro del tipo di base.

Versione introdotta

.NET 6

Motivo della modifica

Le ragioni per la modifica sono molteplici:

  • Se è stato passato un argomento non valido ed è stata generata un'eccezione, tale eccezione potrebbe contenere il nome del parametro di base o il nome del parametro derivato, a seconda dell'implementazione. Poiché il chiamante potrebbe usare un riferimento tipizzato come base o come tipo derivato, è impossibile che il nome dell'argomento nell'eccezione sia sempre corretto.
  • La presenza di nomi di parametri diversi rende più difficile convalidare in modo coerente il comportamento in tutte le implementazioni di Stream.
  • .NET 6 aggiunge un metodo pubblico in Stream per la convalida degli argomenti e tale metodo deve avere un nome di parametro coerente da usare.

L'effetto di questa modifica che causa un'interruzione è minimo:

  • Per i file binari esistenti, l'impatto è limitato al codice che usa la reflection per esaminare i nomi dei parametri nei tipi derivati interessati.
  • Per il codice sorgente, l'impatto è limitato al codice che usa parametri denominati per richiamare metodi sul tipo di flusso derivato usando una variabile tipizzata come tale tipo derivato.

In entrambi i casi, l'azione consigliata consiste nell'usare in modo coerente il nome del parametro di base.

API interessate

Vedi anche