BrotliStream ya no permite valores CompressionLevel sin definir
Los constructores BrotliStream que toman un argumento CompressionLevel ya no permiten valores que no están definidos en la enumeración CompressionLevel. Si pasa un valor no válido, se produce una excepción ArgumentException.
Comportamiento anterior
BrotliStream le permitía pasar un nivel de compresión arbitrario al constructor, convirtiendo el nivel deseado directamente a CompressionLevel. Por ejemplo:
BrotliStream brotli = new BrotliStream(baseStream,
(CompressionLevel)5); // Use level 5
Sin embargo, si se proporcionaba un nivel arbitrario, este se transmitía tal cual a la biblioteca subyacente, lo que provocaba un comportamiento incoherente y potencialmente inesperado.
Comportamiento nuevo
BrotliStream solo permite los valores definidos en CompressionLevel. Si pasa un valor indefinido al constructor, se produce una excepción ArgumentException.
Versión introducida
.NET 7
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
El propósito de la enumeración CompressionLevel es permitir que los desarrolladores usen algoritmos de compresión sin necesidad de comprender el significado de sus parámetros de optimización.
Si se proporcionaba un nivel arbitrario, este se transmitía tal cual a la biblioteca subyacente, lo que provocaba un comportamiento incoherente y potencialmente inesperado. Con este cambio, el comportamiento se alinea con otros flujos de compresión, por ejemplo, DeflateStream.
Con el nuevo ajuste de los valores CompressionLevel y la adición de CompressionLevel.SmallestSize, ahora es posible tener una variedad de compensaciones en los algoritmos de compresión. Los usuarios pueden seguir confiando en los valores CompressionLevel como abstracciones de dichas compensaciones.
Acción recomendada
Si confiaba en pasar valores indefinidos como CompressionLevel, revise su caso de uso y decida qué valor documentado es el más óptimo para él.
API afectadas
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de