如果一个成员是 IDisposable,我们是否应该实现 IDisposable?

2024-03-30

我想是这样。但看一下 ASP.NET 中的一个内置类:

public sealed class HttpPostedFile
{
    public Stream InputStream { get; }   // Stream implements IDisposable
    // other properties and methods
}

假设我有一个实例HttpPostedFile called file。既然没有Dispose显式调用的方法,file.InputStream.Dispose()在被销毁之前不会被调用,我认为这违背了初衷IDisposable。我认为正确的实施应该包含一个标准IDisposable执行。因此,如果其中一名成员实施IDisposable,类也需要实现它。

你有什么意见?好像有点复杂。


一般来说,您应该实施IDisposable if you own属性所代表的资源 - 请参阅这个问题用于讨论这个主题 https://stackoverflow.com/questions/674879/who-disposes-of-an-idisposable-public-property.

我想说,因为 HttpPostedFile 是在处理 HTTP 请求期间实例化的,所以它不拥有该流,因此不会处置它。当 HTTP 请求处理完成时,该流将被释放。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果一个成员是 IDisposable,我们是否应该实现 IDisposable? 的相关文章

随机推荐