如何应用 System.Func 的 using-pattern?

How to apply using-pattern with System.Func?

通常我使用具有众所周知的使用模式的内存流。

using(var mem = new MemoryStream(blob))
{
  foo(mem);
}

没想到我必须使用在客户端库中定义的函数 bar(Func<Stream>)。我可以这样称呼它

bar(() => new MemoryStream(blob));

但是没有人正确处理流。如何解决它? Func 是否应该与 IDisposable 类型一起使用?

这似乎是一个设计不佳的库。

如果您知道库 不会处理流 并且 它不会保留 Func<Stream> 供以后使用,那么你可以这样做:

using(var mem = new MemoryStream(blob))
{
    bar(() => mem);
}