Funkcja BrotliStream nie zezwala już na niezdefiniowane wartości CompressionLevel
Konstruktory BrotliStream , które przyjmują CompressionLevel argument, nie zezwalają już na wartości, które nie są zdefiniowane w wyliczenie CompressionLevel . Jeśli przekażesz nieprawidłową wartość, zostanie zgłoszony element ArgumentException .
Poprzednie zachowanie
BrotliStream umożliwia przekazanie dowolnego poziomu kompresji do konstruktora przez rzutowanie żądanego poziomu bezpośrednio do CompressionLevel. Na przykład:
BrotliStream brotli = new BrotliStream(baseStream,
(CompressionLevel)5); // Use level 5
Jednak w przypadku podania dowolnego poziomu, który został przekazany jako do bazowej biblioteki, co powoduje niespójne i potencjalnie nieoczekiwane zachowanie.
Nowe zachowanie
BrotliStream Zezwala tylko na wartości zdefiniowane w pliku CompressionLevel. Jeśli przekażesz niezdefiniowaną wartość do konstruktora, ArgumentException zostanie zwrócona wartość .
Wprowadzona wersja
.NET 7
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
CompressionLevel Celem wyliczenia jest umożliwianie deweloperom używania algorytmów kompresji bez konieczności zrozumienia znaczenia ich parametrów dostrajania.
Jeśli podano dowolny poziom, został on przekazany jako do bazowej biblioteki, co powoduje niespójne i potencjalnie nieoczekiwane zachowanie. Dzięki tej zmianie zachowanie jest dostosowane do innych strumieni kompresji, na przykład DeflateStream.
Dzięki nowemu dostrajaniu CompressionLevel wartości i dodaniu CompressionLevel.SmallestSizeelementu można teraz mieć różne kompromisy w algorytmach kompresji. Użytkownicy mogą nadal polegać na CompressionLevel wartościach jako abstrakcjach takich kompromisów.
Zalecana akcja
Jeśli polegasz na przekazaniu niezdefiniowanych wartości jako CompressionLevel, ponownie sprawdź przypadek użycia i zdecyduj, która udokumentowana wartość jest najbardziej optymalna.