diff options
author | Atsushi Eno <atsushieno@veritas-vos-liberabit.com> | 2013-01-22 12:25:22 +0400 |
---|---|---|
committer | Atsushi Eno <atsushieno@veritas-vos-liberabit.com> | 2013-01-22 12:25:22 +0400 |
commit | cde9fc6a8fe569203cb991121a35c2a9c7f4c420 (patch) | |
tree | 8633a637be4973b221d9c7e9378af5e0a08b5670 /Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs | |
parent | 8911e1d3f169a0e378b4e237926269d9218c8fd3 (diff) |
import 2b5dbddd740b, new directory structure in the original rx.
Diffstat (limited to 'Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs')
-rw-r--r-- | Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs b/Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs new file mode 100644 index 0000000..81ffa53 --- /dev/null +++ b/Rx/NET/Source/System.Reactive.Core/Reactive/AnonymousObservable.cs @@ -0,0 +1,38 @@ +// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. + +using System.Reactive.Disposables; + +namespace System.Reactive +{ + /// <summary> + /// Class to create an IObservable<T> instance from a delegate-based implementation of the Subscribe method. + /// </summary> + /// <typeparam name="T">The type of the elements in the sequence.</typeparam> + public sealed class AnonymousObservable<T> : ObservableBase<T> + { + private readonly Func<IObserver<T>, IDisposable> _subscribe; + + /// <summary> + /// Creates an observable sequence object from the specified subscription function. + /// </summary> + /// <param name="subscribe">Subscribe method implementation.</param> + /// <exception cref="ArgumentNullException"><paramref name="subscribe"/> is null.</exception> + public AnonymousObservable(Func<IObserver<T>, IDisposable> subscribe) + { + if (subscribe == null) + throw new ArgumentNullException("subscribe"); + + _subscribe = subscribe; + } + + /// <summary> + /// Calls the subscription function that was supplied to the constructor. + /// </summary> + /// <param name="observer">Observer to send notifications to.</param> + /// <returns>Disposable object representing an observer's subscription to the observable sequence.</returns> + protected override IDisposable SubscribeCore(IObserver<T> observer) + { + return _subscribe(observer) ?? Disposable.Empty; + } + } +} |