// Needed for NET40 #if !NET_4_6 using System; using LinqInternal.Core; namespace LinqInternal.Collections { [Serializable] internal sealed class CustomObserver : IObserver { private readonly Action _onCompleted; private readonly Action _onError; private readonly Action _onNext; public CustomObserver(Action onNext) { _onCompleted = ActionHelper.GetNoopAction(); _onError = ActionHelper.GetNoopAction(); _onNext = onNext ?? ActionHelper.GetNoopAction(); } public CustomObserver(Action onCompleted, Action onError, Action onNext) { _onCompleted = onCompleted ?? ActionHelper.GetNoopAction(); _onError = onError ?? ActionHelper.GetNoopAction(); _onNext = onNext ?? ActionHelper.GetNoopAction(); } public void OnCompleted() { var onCompleted = _onCompleted; onCompleted(); } public void OnError(Exception error) { var onError = _onError; onError(error); } public void OnNext(T value) { var onNext = _onNext; onNext(value); } } } #endif