コード例 #1
0
        public static IQbservable <TResult> ManySelect <TSource, TResult>(this IQbservable <TSource> source, Expression <Func <IObservable <TSource>, TResult> > selector, IScheduler scheduler)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (selector == null)
            {
                throw new ArgumentNullException(nameof(selector));
            }
            if (scheduler == null)
            {
                throw new ArgumentNullException(nameof(scheduler));
            }

            return(source.Provider.CreateQuery <TResult>(
                       Expression.Call(
                           null,
#if CRIPPLED_REFLECTION
                           InfoOf(() => QbservableEx.ManySelect <TSource, TResult>(default(IQbservable <TSource>), default(Expression <Func <IObservable <TSource>, TResult> >), default(IScheduler))),
#else
                           ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource), typeof(TResult)),
#endif
                           source.Expression,
                           selector,
                           Expression.Constant(scheduler, typeof(IScheduler))
                           )
                       ));
        }
コード例 #2
0
        public static IQbservable <TResult> ForkJoin <TSource1, TSource2, TResult>(this IQbservable <TSource1> first, IObservable <TSource2> second, Expression <Func <TSource1, TSource2, TResult> > resultSelector)
        {
            if (first == null)
            {
                throw new ArgumentNullException(nameof(first));
            }
            if (second == null)
            {
                throw new ArgumentNullException(nameof(second));
            }
            if (resultSelector == null)
            {
                throw new ArgumentNullException(nameof(resultSelector));
            }

            return(first.Provider.CreateQuery <TResult>(
                       Expression.Call(
                           null,
#if CRIPPLED_REFLECTION
                           InfoOf(() => QbservableEx.ForkJoin <TSource1, TSource2, TResult>(default(IQbservable <TSource1>), default(IObservable <TSource2>), default(Expression <Func <TSource1, TSource2, TResult> >))),
#else
                           ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource1), typeof(TSource2), typeof(TResult)),
#endif
                           first.Expression,
                           GetSourceExpression(second),
                           resultSelector
                           )
                       ));
        }
コード例 #3
0
        public static IQbservable <TResult> Create <TResult>(this IQbservableProvider provider, Expression <Func <IObserver <TResult>, IEnumerable <IObservable <object> > > > iteratorMethod)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (iteratorMethod == null)
            {
                throw new ArgumentNullException(nameof(iteratorMethod));
            }

            return(provider.CreateQuery <TResult>(
                       Expression.Call(
                           null,
#if CRIPPLED_REFLECTION
                           InfoOf(() => QbservableEx.Create <TResult>(default(IQbservableProvider), default(Expression <Func <IObserver <TResult>, IEnumerable <IObservable <object> > > >))),
#else
                           ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TResult)),
#endif
                           Expression.Constant(provider, typeof(IQbservableProvider)),
                           iteratorMethod
                           )
                       ));
        }
コード例 #4
0
        public static IQbservable <TSource[]> ForkJoin <TSource>(this IQbservableProvider provider, IEnumerable <IObservable <TSource> > sources)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (sources == null)
            {
                throw new ArgumentNullException(nameof(sources));
            }

            return(provider.CreateQuery <TSource[]>(
                       Expression.Call(
                           null,
#if CRIPPLED_REFLECTION
                           InfoOf(() => QbservableEx.ForkJoin <TSource>(default(IQbservableProvider), default(IEnumerable <IObservable <TSource> >))),
#else
                           ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource)),
#endif
                           Expression.Constant(provider, typeof(IQbservableProvider)),
                           GetSourceExpression(sources)
                           )
                       ));
        }
コード例 #5
0
        public static IQbservable <TSource> Expand <TSource>(this IQbservable <TSource> source, Expression <Func <TSource, IObservable <TSource> > > selector)
        {
            if (source == null)
            {
                throw new ArgumentNullException(nameof(source));
            }
            if (selector == null)
            {
                throw new ArgumentNullException(nameof(selector));
            }

            return(source.Provider.CreateQuery <TSource>(
                       Expression.Call(
                           null,
#if CRIPPLED_REFLECTION
                           InfoOf(() => QbservableEx.Expand <TSource>(default(IQbservable <TSource>), default(Expression <Func <TSource, IObservable <TSource> > >))),
#else
                           ((MethodInfo)MethodInfo.GetCurrentMethod()).MakeGenericMethod(typeof(TSource)),
#endif
                           source.Expression,
                           selector
                           )
                       ));
        }