interface IMyInterace
{
void Open();
object Read();
void Close();
}
class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }
}
有没有一种很好的方法来处理这种情况,以确保类中的可处置实例被调用?(除了在文档中,没有信号通知调用者他们必须调用“关闭”。)IMyInterface 的实现不一定封装 IDisposible 实例,并且在应用程序的整个生命周期中反复关闭和重新打开。
我正在考虑这样做:
- 在 MyImplementation 中实现 IDisposible。
- 设置 Dispose() 以调用 Close()。
- 在 Open 的开头添加对 Close() 或 Dispose() 的调用,以确保先前的调用已关闭。
IMyInterface 的用户不知道他们使用的是什么实现,所以我不确定使 MyImplementation disposible 有多少价值,而且,并非所有实现都会封装 IDisposibles。