首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无Ionic.Zlib.DeflateStream.BaseStream

无Ionic.Zlib.DeflateStream.BaseStream
EN

Stack Overflow用户
提问于 2012-04-27 23:48:32
回答 1查看 801关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-28 00:22:05

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

当我像这样创建对象时:

代码语言:javascript
复制
MemoryStream ms = new MemoryStream();
DeflateStream ds = new DeflateStream(ms,...);

如果我创建一个类,如下所示:

代码语言:javascript
复制
class MyDeflateStream : DeflateStream
{
public MemoryStream RootStream;
}

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

代码语言:javascript
复制
MemoryStream ms = new MemoryStream();
MyDeflateStream ds = new MyDeflateStream (ms,...);
ds.RootStream = ms;

然后将函数放在我需要访问的地方,如下所示:

代码语言:javascript
复制
void Whatever(DeflateStream ds)
{
MyDeflateStream mds = (MyDeflateStream)ds;
MemoryStream ms = mds.RootStream;
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10353766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档