No Ionic.Zlib.DeflateStream.BaseStream

本文关键字:BaseStream DeflateStream Zlib Ionic No | 更新日期: 2023-09-27 18:32:32

我正在使用C#代码中的Ionic.Zlib.DeflateStream(我认为又名DotNetZip(,并注意到它没有像System.IO.Compression.DeflateStream那样具有BaseStream属性。 有没有简单的方法可以访问它? 也许是部分类或扩展(不太熟悉这些概念(,或者只是我忽略的东西,或者这个库的更新版本?

更新:我在一个大型项目的深处有一个函数,该项目被赋予了Ionic.Zlib.DeflateStream作为参数。 我知道底层流是一个 MemoryStream,我想修改代码以寻求在底层流中的位置 0,写入几个字节,然后返回到 previos 位置。 这就是我们所说的"kludge",或肮脏的黑客,而不是重写大量代码......但这是我们目前正在寻找的解决方案,而不是其他需要更多重新测试的解决方案。 MemoryStream 的这一部分中需要更新的几个字节不会被压缩,因此在 DeflateStream 之外修改它们就可以了。

No Ionic.Zlib.DeflateStream.BaseStream

我仍然想知道未来项目的其他选择,或者这个答案是否会导致问题,但我想我确实找到了一个选项......

当我像这样创建对象时:

MemoryStream ms = new MemoryStream();
DeflateStream ds = new DeflateStream(ms,...);

相反,如果我创建一个类,例如:

class MyDeflateStream : DeflateStream
{
public MemoryStream RootStream;
}

我可以将上面的代码更改为:

MemoryStream ms = new MemoryStream();
MyDeflateStream ds = new MyDeflateStream (ms,...);
ds.RootStream = ms;

然后使我需要访问它的函数如下所示:

void Whatever(DeflateStream ds)
{
MyDeflateStream mds = (MyDeflateStream)ds;
MemoryStream ms = mds.RootStream;
}

理想情况下,我只需要修改 Whatever(( 函数,因为有时我可能无法访问最初创建对象的代码,但在这种情况下,我可以访问。 所以仍然希望得到答案,即使我找到了一种可能的方法来解决这个问题。