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

sha*_*oth 9 .net c# stream

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

有没有可能是这样的流去我只需要一些标准执行overrideRead()操作?

And*_*res 9

您可以使用构造函数new MemorySream(byte[] buffer,?bool writeable)(文档).

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


usr*_*usr 8

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

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

更喜欢继承的组合.

  • +1"如果你继承自MemoryStream,你就会滥用继承来保存代码,这不是它的主要目的." 这就是我想要做的事情. (4认同)