namespace Sharp7.Rx.Basics; internal class DisposableItem : IDisposable { private readonly Action disposeAction; bool disposed; public DisposableItem(IObservable observable, Action disposeAction) { this.disposeAction = disposeAction; Observable = observable; } public IObservable Observable { get; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposed) return; if (disposing) { disposeAction(); } disposed = true; } }