我的项目有许多读者和作家类。我开始实现 IDisposable,但我相信它为我的类添加了许多样板代码。对于每个类,我需要实现:
- 一个析构函数。
- 一个 Dispose() 方法。
- 一个 Dispose(bool disposing) 方法。
- “布尔处理”字段。
- 检查对象是否已在每个公共方法上释放。
- 文档(因为我启用了文档标志,否则编译器会发出警告)。
我的问题:
是否值得实施 IDisposable?以前,我使用我的课程,例如:
using (Stream s = File.OpenRead("myfile.bin"))
x = new SomethingReader(s).ReadSomething();
使用 IDisposable,它并没有太大改善:
using (SomethingReader r = new SomethingReader(File.OpenRead("myfile.bin")))
x = r.ReadSomething();
我可以只实现 Dispose() 方法吗?
我的班级不使用非托管资源,因此 Dispose(false) 什么也不做。由于我正在清理的也是 IDisposable,因此在处理对象后调用我的方法应该抛出 ObjectDisposedException,因为我正在使用已经处理的对象。
如果您建议实施完整的 IDisposable 模式,有没有办法减少样板代码?
编辑:由于一些答案建议密封课程,我可以确认,事实上,密封课程没有任何问题。