//-------------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // File: IProducerConsumerCollectionExtensions.cs // //-------------------------------------------------------------------------- using System; namespace System { internal class DelegateBasedObserver : IObserver { private Action _onNext; private Action _onError; private Action _onCompleted; internal DelegateBasedObserver(Action onNext, Action onError, Action onCompleted) { if (onNext == null) throw new ArgumentNullException("onNext"); if (onError == null) throw new ArgumentNullException("onError"); if (onCompleted == null) throw new ArgumentNullException("onCompleted"); _onNext = onNext; _onError = onError; _onCompleted = onCompleted; } public void OnCompleted() { _onCompleted(); } public void OnError(Exception error) { _onError(error); } public void OnNext(T value) { _onNext(value); } } }