namespace DTLib.Reactive { public abstract class ReactiveProvider { protected ReactiveStream Stream { get { lock (_stream) return _stream; } set { lock (_stream) _stream = value; } } protected ReactiveStream _stream; public ReactiveProvider() { } public ReactiveProvider(ReactiveStream stream) => Join(stream); public virtual void Join(ReactiveStream stream) { lock (Stream) Stream = stream; } public virtual void Leave(ReactiveStream stream) { lock (Stream) Stream = null; } } }