这是我经常看到的两种类型的流写入过程。 将消费委托给上层:
public Stream OpenWrite()
{
return File.OpenWrite(/*...*/); //this is example method invokation
}
//...
using(var output = OpenWrite())
{
input.CopyTo(output);
}
强行消耗流:
public void WriteAll(Stream input)
{
using(input)
using(var output = File.OpenWrite())//this is example method invokation
{
input.CopyTo(output)
}
}
WriteAll 可以通过 OpenWrite 作为扩展方法轻松实现:
public void WriteAll(Stream input)
{
using(input)
using(var output = OpenWrite())
{
input.CopyTo(output)
}
}
在这种具体情况下,可以通过 WriteAll 实现 OpenWrite 吗?
public Stream OpenWrite()
{
return /*some produccer/consumer stream ? */
}
我问是因为我需要解决类似的任务,将强制性消费转化为懒惰消费。