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