forked from neuecc/UniRx
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Observable.Conversions.cs
74 lines (63 loc) 路 2.4 KB
/
Observable.Conversions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
锘縰sing System;
using System.Collections.Generic;
using UniRx.Operators;
namespace UniRx
{
public static partial class Observable
{
public static IObservable<T> AsObservable<T>(this IObservable<T> source)
{
if (source == null) throw new ArgumentNullException("source");
// optimize, don't double wrap
if (source is UniRx.Operators.AsObservableObservable<T>)
{
return source;
}
return new AsObservableObservable<T>(source);
}
public static IObservable<T> ToObservable<T>(this IEnumerable<T> source)
{
return ToObservable(source, Scheduler.DefaultSchedulers.Iteration);
}
public static IObservable<T> ToObservable<T>(this IEnumerable<T> source, IScheduler scheduler)
{
return new ToObservableObservable<T>(source, scheduler);
}
public static IObservable<TResult> Cast<TSource, TResult>(this IObservable<TSource> source)
{
return new CastObservable<TSource, TResult>(source);
}
/// <summary>
/// witness is for type inference.
/// </summary>
public static IObservable<TResult> Cast<TSource, TResult>(this IObservable<TSource> source, TResult witness)
{
return new CastObservable<TSource, TResult>(source);
}
public static IObservable<TResult> OfType<TSource, TResult>(this IObservable<TSource> source)
{
return new OfTypeObservable<TSource, TResult>(source);
}
/// <summary>
/// witness is for type inference.
/// </summary>
public static IObservable<TResult> OfType<TSource, TResult>(this IObservable<TSource> source, TResult witness)
{
return new OfTypeObservable<TSource, TResult>(source);
}
/// <summary>
/// Converting .Select(_ => Unit.Default) sequence.
/// </summary>
public static IObservable<Unit> AsUnitObservable<T>(this IObservable<T> source)
{
return new AsUnitObservableObservable<T>(source);
}
/// <summary>
/// Same as LastOrDefault().AsUnitObservable().
/// </summary>
public static IObservable<Unit> AsSingleUnitObservable<T>(this IObservable<T> source)
{
return new AsSingleUnitObservableObservable<T>(source);
}
}
}