using System; using System.Reactive.Disposables; namespace cannect.Core { public class DisposableObject : ICancelable { public bool IsDisposed { get; private set; } public void Dispose() { DisposeCheck(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { TrashBin.Dispose(); } } protected CompositeDisposable TrashBin { get; } = new(); private void DisposeCheck(bool disposing) { if (IsDisposed) { return; } Dispose(disposing); IsDisposed = true; } } }