.NET 中是否有只读流的默认实现

本文关键字:默认 实现 只读 是否 NET | 更新日期: 2023-09-27 17:56:17

我需要制作一个仅支持Read()操作的Stream - 流将是只读且不可搜索的。我仍然必须实现很多属性,例如Position(这将抛出NotImplementedException) - 这是很多样板代码。

对于我只需要override Read()操作的此类流,是否有一些标准实现?

.NET 中是否有只读流的默认实现

您可以使用

构造函数new MemorySream(byte[] buffer, bool writeable)(文档)。

writeable 参数设置为 false 将使流成为只读。

BCL 中不存在这样的流。你必须写它。在我的生活中,我已经实施了大约十几个这样的流,而且还不错。第二个要容易得多,因为您可以将第一个用作模板。

我建议您从Stream继承,而不是从其他流继承。如果你是从MemoryStream继承,你会滥用继承来保存代码,这不是它的主要目的。您的派生流不会像MemoryStream那样工作,它不是MemoryStream

更喜欢组合而不是继承。