2012-04-27 79 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; 
} 

理想我只需要修改無論()函數,因爲有時我可能沒有訪問代碼那首先創造了這個物體,但在這種情況下,我確實是這樣做的。所以仍然希望得到答案,儘管我找到了一種可能的解決方法。