<PackageReference Include="System.Reactive" Version="4.1.0-preview.330" />

MultipleAssignmentDisposable

Represents a disposable resource whose underlying disposable resource can be swapped for another disposable resource.
namespace System.Reactive.Disposables { public sealed class MultipleAssignmentDisposable : ICancelable, IDisposable { private IDisposable _current; public bool IsDisposed => System.Reactive.Disposables.Disposable.GetIsDisposed(ref _current); public IDisposable Disposable { get { return System.Reactive.Disposables.Disposable.GetValueOrDefault(ref _current); } set { System.Reactive.Disposables.Disposable.TrySetMultiple(ref _current, value); } } public void Dispose() { System.Reactive.Disposables.Disposable.TryDispose(ref _current); } } }