2012-04-27 54 views
0

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

更新:我有一个大型项目的内部功能,给出了一个Ionic.Zlib.DeflateStream作为参数。我知道基础流是一个MemoryStream,并且我想修改代码以在基础流中寻找位置0,写入几个字节,然后返回到previos Position。这就是我们所说的“kludge”或肮脏的黑客攻击,而不是重写大量代码......但这是我们目前正在寻找的解决方案,而不是其他需要更多重新测试的解决方案。这部分需要更新的MemoryStream中的几个字节没有被压缩,所以在这个问题上在DeflateStream之外修改它们是没有问题的。

+1

请描述你想达到的目标,而不是你认为你应该达到的目标。 – 2012-04-27 15:54:17

回答

0

我还是想知道未来项目的其他选项,或者如果这个答案可能会造成问题,但我想我没有找到一个选项...

当我创建这样的对象:

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; 
} 

理想我只需要修改无论()函数,因为有时我可能没有访问代码那首先创造了这个物体,但在这种情况下,我确实是这样做的。所以仍然希望得到答案,尽管我找到了一种可能的解决方法。