BrotliStream 不再允許未定義的 CompressionLevel 值

採用 CompressionLevel 引數的 BrotliStream 建構函式不再允許 CompressionLevel 列舉中未定義的值。 如果您傳遞不正確值,則會擲回 ArgumentException

先前的行為

BrotliStream 可讓您將所需的層級直接轉換成 CompressionLevel,將任意壓縮層級傳遞至建構函式。 例如:

BrotliStream brotli = new BrotliStream(baseStream,
                                       (CompressionLevel)5); // Use level 5

不過,如果提供任意層級,則會依原狀傳遞至基礎程式庫,因而產生不一致且可能是未預期的行為。

新的行為

BrotliStream 只允許 CompressionLevel 中定義的值。 如果您將未定義的值傳遞至建構函式,則會擲回 ArgumentException

導入的版本

.NET 7

中斷性變更的類型

這項變更會影響二進位相容性

變更原因

CompressionLevel 列舉的目的是要讓開發人員使用壓縮演算法,而不需要了解其微調參數的意義。

如果提供任意層級,則會依原樣傳遞至基礎程式庫,導致不一致且可能未預期的行為。 透過這項變更,行為會與其他壓縮資料流程一致,例如 DeflateStream

透過新的 CompressionLevel 值微調和新增 CompressionLevel.SmallestSize,現在可以在壓縮演算法中擁有各種取捨。 使用者可以繼續依賴 CompressionLevel 值做為這類取捨的抽象概念。

如果您依賴傳遞未定義的值作為 CompressionLevel,請重新檢視您的使用案例,並決定哪一個記載的值是最為適合。

受影響的 API