使用一次性对象的类的层次结构.在所有这些上实现IDisposable?

Gaz*_*yer 10 c# idisposable

我有一个使用文件流的类.它需要在应用程序关闭时关闭流,因此我使类实现IDisposable.

该类是另一个类的成员,它是另一个类的成员等.一直到我的主应用程序.

因此,我是否必须在所有这些类上实现IDisposable ?

如果我将来更改文件实现以便在每次写入后关闭文件怎么办?我现在有一整套无条件实现IDisposable的类.

我想我对将IDisposable语义扼杀到除了链上的一些轻微的实现细节之外的不需要它们的类中感到不舒服.这有什么办法吗?

Jar*_*Par 4

一般来说,如果您的类型包含实现该类型的成员,那么IDisposable该类型也应该实现IDiposable。这是实施该IDisposable模式的最简单方法。

我使用的一个例外是,如果我的类型契约包含一个方法,该方法 1) 必须被调用,2) 发出资源使用结束的信号IDisposable。在这种情况下,我觉得不实现IDisposable而是使用该方法来调用很舒服Dispose