Einige Parameter in von Stream abgeleiteten Typen werden umbenannt

In .NET 6 wurden einige Parameter von Methoden für von System.IO.Stream abgeleitete Typen so umbenannt, dass sie denen der Basisklasse entsprechen.

Änderungsbeschreibung

In früheren .NET-Versionen setzen verschiedene von Stream abgeleitete Typen Methoden außer Kraft, verwenden aber andere Parameternamen als der Basistyp. Beispielsweise heißt der Bytearrayparameter von DeflateStream.Read(Byte[], Int32, Int32)array, während das entsprechende Argument in der Basisklassenmethode buffer heißt.

In .NET 6 wurden alle von System.IO.Stream abgeleiteten Typen mit abweichenden Parameternamen an den Basistyp angepasst, indem nun die gleichen Parameternamen verwendet werden wie dort.

Eingeführt in Version

.NET 6

Grund für die Änderung

Für diese Änderung gibt es mehrere Gründe:

  • Wenn ein ungültiges Argument übergeben und eine Ausnahme ausgelöst wurde, konnte diese Ausnahme je nach Implementierung den Namen des Basisparameters oder den Namen des abgeleiteten Parameters enthalten. Da der Aufrufer einen als den Basistyp oder einen als den abgeleiteten Typ typisierten Verweis verwenden konnte, war es unmöglich, dass der Argumentname in der Ausnahme immer richtig war.
  • Verschiedene Parameternamen erschweren das konsistente Überprüfen von Verhalten in allen Stream-Implementierungen.
  • .NET 6 fügt Stream eine öffentliche Methode für die Überprüfung von Argumenten hinzu, die einen konsistenten Parameternamen benötigt, den sie verwenden kann.

Dieser Breaking Change hat minimale Auswirkungen:

  • Bei vorhandenen Binärdateien beschränken sie sich auf Code, der mit Reflexion die Namen von Parametern für die betroffenen abgeleiteten Typen untersucht.
  • Bei Quellcode beschränken sie sich auf Code, der benannte Parameter verwendet, um Methoden für den von Stream abgeleiteten Typ mit einer als diesem Typ typisierten Variable aufzurufen.

In beiden Fällen wird empfohlen, den Basisparameternamen konsistent zu verwenden.

Betroffene APIs

Siehe auch