有人知道在.net中是否有懒加载流的实现吗?换句话说,我想创建一个像这样的方法:
public Stream MyMethod() {
return new LazyStream(...whatever parameters..., delegate() {
... some callback code.
});
}
当我的其他代码调用MyMethod()以返回检索流时,实际上在没有人尝试从流中读取数据之前,它不会执行任何操作。通常的方法是将MyMethod作为参数传递流参数,但在我的情况下,这种方法行不通(我想将返回的流给一个MVC FileStreamResult)。
进一步解释一下,我要创建一系列分层转换,因此:
数据库结果集 =(转换为)=> 字节流 =(链接到)=> GZipStream =(传递给)=> FileStreamResult构造函数。
结果集可能很大(GB),因此我不想将结果缓存在MemoryStream中,然后将其传递给GZipStream构造函数。相反,我想在GZipStream请求数据时从结果集中获取数据。