我需要将 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、Seek、Write 和 WriteByte 方法(还有其他方法吗?)。
有没有更简单或更好的方法来做到这一点?我是否缺少任何现有的构造函数或属性?