Ну, я был совершенно неправ в своем первом ответе. Я посмотрел в исходном коде Mono и обнаружил, что класс GZipStream фактически перенаправляет свои вызовы чтения / записи (и почти любые другие) на соответствующие вызовы методов внутреннего объекта DeflateStream:
public override int Read (byte[] dest, int dest_offset, int count)
{
return deflateStream.Read(dest, dest_offset, count);
}
public override void Write (byte[] src, int src_offset, int count)
{
deflateStream.Write (src, src_offset, count);
}
Единственное отличие состоит в том, что он всегда создает объект DeflateStream с флагом gzip, установленным в true.
Это, конечно, не ответ на ваш вопрос, но, возможно, это немного поможет.