如何应用 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);
}
通常我使用具有众所周知的使用模式的内存流。
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);
}