2011-11-07 46 views
0

我有兩個流,我想合併成一個流。第一個流是用戶定義的stringStream從System.IO.Stream類繼承的類,第二個流是networkStream,我創建了一個Stream數組,並存儲這兩個流並將其傳遞給用戶定義的類combinedStream構造函數作爲參數。下面是代碼流連接錯誤

StringStream stringStream = new StringStream("test string"); 
Stream[] streamArray = new Stream[2]; 
streamArray[0] = stringStream; 
streamArray[1] = nsStream;//NetworkStream instance parameter 
CombinedStream combinedStream = new CombinedStream(streamArray); 
this.nsStream = (NetworkStream)combinedStream; 

這是我得到了錯誤的臺詞:「無法轉換CombinedStream到的NetworkStream」 可能是什麼原因?

+0

因爲它不是網絡流? CombinedStream是否繼承自NetworkStream?您的nsStream成員是否需要成爲NetworkStream,或者您是否可以使用CombinedStream實現的更一般的流接口? – Rup

回答

3

相當簡單,因爲CombinedStream(這可能是你自己的班級)是而不是 a NetworkStream。我不會期望它是。

最大的問題是爲什麼nsStream無論如何都應該是NetworkStream。你可以改變這種類型,所以它只是Stream而已?這應該很好除非你使用任何NetworkStream特定的方法......如果你這樣做,那麼當這些方法在CombinedStream上被調用時,你會期望發生什麼?

+0

我正在開發一個** http應用程序**,其中一個類具有讀取方法,用於讀取NetworkStream,並且此方法將實例變量nsStream設置爲CombinedStream(從Stream類繼承的另一個類)。 – Xris

+0

@ Xris:但爲什麼'nsStream'必須是'NetworkStream'?它是否需要'NetworkStream'中的任何內容? –

+0

我使用networkStream的唯一原因是因爲我最初創建了一個實例化來自套接字的tcp連接的類,並且使用套接字,我可以創建一個networkStream對象,我可以讀取! – Xris

1

聽起來像CombinedStream沒有被定義爲NetworkStream的子類。因此最後一行:this.nsStream = (NetworkStream)combinedStream;將作爲無效轉換失敗。