您可能会创建一个实现的类,IDisposable然后派生也包含托管资源的类,这是很常见的。建议Dispose使用virtual关键字标记该方法,以便客户端能够清除其可能拥有的任何资源。
public class Parent : IDisposable { private ManagedResource parentManagedResource = new ManagedResource(); public virtual void Dispose() { if (parentManagedResource != null) { parentManagedResource.Dispose(); } } } public class Child : Parent { private ManagedResource childManagedResource = new ManagedResource(); public override void Dispose() { if (childManagedResource != null) { childManagedResource.Dispose(); } //清理父母的资源 base.Dispose(); } }