.NET 中是否有只读流的默认实现
本文关键字:默认 实现 只读 是否 NET | 更新日期: 2023-09-27 17:56:17
我需要制作一个仅支持Read()
操作的Stream
- 流将是只读且不可搜索的。我仍然必须实现很多属性,例如Position
(这将抛出NotImplementedException
) - 这是很多样板代码。
对于我只需要override
Read()
操作的此类流,是否有一些标准实现?
您可以使用
构造函数new MemorySream(byte[] buffer, bool writeable)
(文档)。
将 writeable
参数设置为 false
将使流成为只读。
BCL 中不存在这样的流。你必须写它。在我的生活中,我已经实施了大约十几个这样的流,而且还不错。第二个要容易得多,因为您可以将第一个用作模板。
我建议您从Stream
继承,而不是从其他流继承。如果你是从MemoryStream
继承,你会滥用继承来保存代码,这不是它的主要目的。您的派生流不会像MemoryStream
那样工作,它不是MemoryStream
。
更喜欢组合而不是继承。