/// <summary>
        /// Creates an observable from the specified observable's <see cref="IReactiveQbservable{T}.Subscribe"/> implementation method.
        /// </summary>
        /// <typeparam name="T">Type of the data produced by the observable.</typeparam>
        /// <param name="provider">Provider to use for creation of the observable.</param>
        /// <param name="subscribe">The observable's <see cref="IReactiveQbservable{T}.Subscribe"/> method implementation.</param>
        /// <returns>Newly created observable. To define the observable on a service, use <c>IReactiveDefinition.DefineObservable</c>.</returns>
        public static IReactiveQbservable <T> CreateQbservable <T>(this IReactiveQueryProvider provider, Expression <Func <IReactiveQbserver <T>, Uri, object, CancellationToken, Task <IReactiveQubscription> > > subscribe)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (subscribe == null)
            {
                throw new ArgumentNullException(nameof(subscribe));
            }

            return(provider.CreateQbservable <T>(
                       Expression.Call(
                           ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(typeof(T)),
                           Expression.Constant(provider, typeof(IReactiveQueryProvider)),
                           subscribe
                           )
                       ));
        }
Exemplo n.º 2
0
 public MyReactiveQubscription(IReactiveQueryProvider provider, Expression expression)
     : base(provider)
 {
     _expression = expression;
 }
Exemplo n.º 3
0
 public MyReactiveQubscription(IReactiveQueryProvider provider)
     : base(provider)
 {
     _expression = Expression.Constant(this);
 }
        /// <summary>
        /// Creates a parameterized subject factory from the specified factory's <see cref="IReactiveQubjectFactory{TInput, TOutput, TArgs}.Create"/> implementation method.
        /// </summary>
        /// <typeparam name="TArgs">Type of the parameter passed to the subject factory.</typeparam>
        /// <typeparam name="TInput">Type of the data received by the subjects created by the stream factory.</typeparam>
        /// <typeparam name="TOutput">Type of the data produced by the subjects created by the stream factory.</typeparam>
        /// <param name="provider">Provider to use for creation of the factory.</param>
        /// <param name="create">The factory's <see cref="IReactiveQubjectFactory{TInput, TOutput, TArgs}.Create"/> method implementation.</param>
        /// <returns>Newly created parameterized stream factory. To define the factory on a service, use <c>IReactiveDefinition.DefineStreamFactory</c>.</returns>
        public static IReactiveQubjectFactory <TInput, TOutput, TArgs> CreateQubjectFactory <TArgs, TInput, TOutput>(this IReactiveQueryProvider provider, Expression <Func <Uri, TArgs, object, CancellationToken, Task <IReactiveQubject <TInput, TOutput> > > > create)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (create == null)
            {
                throw new ArgumentNullException(nameof(create));
            }

            return(provider.CreateQubjectFactory <TArgs, TInput, TOutput>(
                       Expression.Call(
                           ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(typeof(TArgs), typeof(TInput), typeof(TOutput)),
                           Expression.Constant(provider, typeof(IReactiveQueryProvider)),
                           create
                           )
                       ));
        }
Exemplo n.º 5
0
 public Qbservable(Expression expression, IReactiveQueryProvider provider)
     : base(provider)
 {
     Expression = expression;
 }
Exemplo n.º 6
0
 public QubscriptionFactory(Expression expression, IReactiveQueryProvider provider)
     : base(provider)
 {
     Expression = expression;
 }
Exemplo n.º 7
0
 public MyReactiveQbservable(IReactiveQueryProvider provider, Expression expression)
     : base(provider)
 {
     _expression = expression;
 }
 /// <summary>
 /// Creates a new subscription represented by an expression tree, using the specified associated query provider.
 /// </summary>
 /// <param name="provider">Query provider associated with the observable.</param>
 protected ReactiveQubscriptionBase(IReactiveQueryProvider provider) => Provider = provider;
        /// <summary>
        /// Makes a parameterized subject factory with the specified expression representation.
        /// </summary>
        /// <typeparam name="TInput">Type of the elements received by the subjects returned by the factory.</typeparam>
        /// <typeparam name="TOutput">Type of the elements produced by the subjects returned by the factory.</typeparam>
        /// <typeparam name="TArg">Type of the argument passed to the stream factory.</typeparam>
        /// <param name="provider">Query provider to use for creation of the subject factory expression representation.</param>
        /// <param name="expression">Expression representation of the subject factory.</param>
        /// <returns>Instance of a parameterized subject factory with the specified expression tree as its representation.</returns>
        public static IReactiveQubjectFactory <TInput, TOutput, TArg> MakeQubjectFactory <TArg, TInput, TOutput>(this IReactiveQueryProvider provider, Expression <Func <IReactiveQubjectFactory <TInput, TOutput, TArg> > > expression)
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            return(provider.CreateQubjectFactory <TArg, TInput, TOutput>(expression.Body));
        }
Exemplo n.º 10
0
 public MyReactiveQbservable(IReactiveQueryProvider provider)
     : base(provider)
 {
     _expression = Expression.Constant(this);
 }
Exemplo n.º 11
0
 public Qubject(Expression expression, IReactiveQueryProvider provider)
     : base(provider)
 {
     Expression = expression;
     _observer  = new Lazy <IReactiveObserver <TInput> >(Resolve);
 }
Exemplo n.º 12
0
 /// <summary>
 /// Creates a new observer represented by an expression tree, using the specified associated query provider.
 /// </summary>
 /// <param name="provider">Query provider associated with the observer.</param>
 protected ReactiveQbserverBase(IReactiveQueryProvider provider) => Provider = provider;
Exemplo n.º 13
0
 public KnownQbservable(Expression expression, Uri observableUri, IReactiveQueryProvider provider)
     : base(expression, provider)
 {
     Uri = observableUri;
 }
Exemplo n.º 14
0
 /// <summary>
 /// Creates a new observable represented by an expression tree, using the specified associated query provider.
 /// </summary>
 /// <param name="provider">Query provider associated with the observable.</param>
 protected ReactiveQbservableBase(IReactiveQueryProvider provider)
 {
     Provider = provider;
 }
 public KnownQubscriptionFactory(Expression expression, Uri subscriptionFactoryUri, IReactiveQueryProvider provider)
     : base(expression, provider)
 {
     Uri = subscriptionFactoryUri;
 }
Exemplo n.º 16
0
 public KnownQubjectFactory(Expression expression, Uri streamFactoryUri, IReactiveQueryProvider provider)
     : base(expression, provider)
 {
     Uri = streamFactoryUri;
 }
 /// <summary>
 /// Creates a new subject factory represented by an expression tree, using the specified associated query provider.
 /// </summary>
 /// <param name="provider">Query provider associated with the subject factory.</param>
 protected ReactiveQubjectFactoryBase(IReactiveQueryProvider provider) => Provider = provider;