我需要將Stream對象傳遞給將序列化一些數據到流中的API。我事先並不知道數據量,我也沒有任何控制權。但是,我想限制流大小一定數量。當長度達到指定限制時,我可以讓MemoryStream引發異常嗎?事情是這樣的:實現這一行爲如何限制MemoryStream長度?
var stream = new MemoryStream(...); // I want to specify MaxLength=10 somehow...
for (byte i = 0; i < 9; i++)
stream.WriteByte(i); // ok
stream.WriteByte(10); // this should throw
的一種方法是重寫SetLength,尋求,寫和WriteByte方法(其他東西嗎?)。
是否有任何容易或更好的方法來做到這一點?我是否缺少任何現有的構造函數或屬性?
什麼是你調用API?它是不是託管? – 2012-07-27 01:00:49
它被管理。另外,我們可以假設流所引發的異常將得到適當的處理。這只是我們項目的另一個內部部分,所以API的名稱不會告訴你任何事情。從技術上講,我們甚至可以改變API,以便它接受最大長度作爲參數,但我真的很想避免這種情況。 – AnatoliB 2012-07-27 01:14:24
你可以不喜歡新的MemoryStream(新字節[XXX])(http://msdn.microsoft.com/en-us/library/e55f3s5k.aspx)? – Bert 2012-07-27 01:46:15