我需要将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