public static IObservable <T> Where <T>(this IObservable <T> source, Func <T, bool> predicate) { // optimized path WhereObservable <T> whereObservable = source as UniRx.Operators.WhereObservable <T>; if (whereObservable != null) { return(whereObservable.CombinePredicate(predicate)); } ISelect <T> selectObservable = source as UniRx.Operators.ISelect <T>; if (selectObservable != null) { return(selectObservable.CombinePredicate(predicate)); } return(new WhereObservable <T>(source, predicate)); }
static readonly TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, -1); // from .NET 4.5 public static IObservable <TR> Select <T, TR>(this IObservable <T> source, Func <T, TR> selector) { // sometimes cause "which no ahead of time (AOT) code was generated." on IL2CPP... //var select = source as ISelect<T>; //if (select != null) //{ // return select.CombineSelector(selector); //} // optimized path WhereObservable <T> whereObservable = source as UniRx.Operators.WhereObservable <T>; if (whereObservable != null) { return(whereObservable.CombineSelector <TR>(selector)); } return(new SelectObservable <T, TR>(source, selector)); }
public Where(WhereObservable <T> parent, IObserver <T> observer, IDisposable cancel) : base(observer, cancel) { this.parent = parent; }