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

时间:2014-04-03 09:38:34

标签: c# .net stream

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

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

2 个答案:

答案 0 :(得分:9)

您可以使用构造函数new MemorySream(byte[] buffer, bool writeable)documentation)。

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

答案 1 :(得分:7)

BCL中不存在这样的流。你必须写它。在我的生活中,我已经实施了大约十几个这样的流,这也不算太糟糕。第二个更容易,因为你可以使用第一个作为模板。

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

首选组合而不是继承。