WCF ServiceContracts是否应始终具有IDisposable?

时间:2011-05-05 21:10:50

标签: .net wcf idisposable

由于this other question,我正在考虑IDisposable和服务合同。

我的FooService代理类继承自ServiceProxyBase,后者实现了IDisposable。我的代理类也继承了服务契约IFooService。这是否意味着IFooService也必须是IDisposable,这样我可以在需要IFooService的任何地方注入我的代理实例并且能够正确处理它?

1 个答案:

答案 0 :(得分:2)

没有。如果从一个实现IDisposable的类继承,则不应该重新实现IDisposable。

如果在Dispose时间有需要清理的对象,则覆盖受保护的Dispose(bool)方法,该方法应作为完整的Disposable模式的一部分在ServiceProxyBase中实现(即使IDisposable未指定此方法)方法)。 bool值表示您因应用程序调用Dispose()而处置。如果bool为false,则从垃圾收集器内的终结器调用,这意味着您只清理非托管对象。

你的Dispose(bool)实现应该通过调用base.Dispose(bool)来完成。