/// <summary> /// Creates a new reactive processing client using the specified client operations provider. /// </summary> /// <param name="provider">Client operations provider.</param> /// <param name="expressionServices">Expression services object, used to perform expression tree manipulations.</param> public ReactiveClient(IReactiveClientEngineProvider provider, IReactiveExpressionServices expressionServices) : base(new ReactiveQueryProvider(provider, expressionServices)) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (expressionServices == null) { throw new ArgumentNullException(nameof(expressionServices)); } _provider = new ReactiveQueryProvider(provider, expressionServices); var thisParameter = ResourceNaming.GetThisReferenceExpression(this); expressionServices.RegisterObject(this, thisParameter); expressionServices.RegisterObject(_provider, Expression.Property(thisParameter, (PropertyInfo)ReflectionHelpers.InfoOf((IReactiveClient c) => c.Provider))); }
/// <summary> /// Creates a new reactive processing context using the specified services and with default service objects. /// </summary> /// <param name="expressionServices">Expression tree services.</param> /// <param name="clientService">Client-side operation services.</param> /// <param name="definitionService">Definition operation services.</param> /// <param name="metadataService">Metadata services.</param> protected ReactiveServiceContext(IReactiveExpressionServices expressionServices, IReactiveClientEngineProvider clientService, IReactiveDefinitionEngineProvider definitionService, IReactiveMetadataEngineProvider metadataService) : this(expressionServices, new ReactiveClient(clientService, expressionServices), new ReactiveDefinition(definitionService, expressionServices), new ReactiveMetadata(metadataService, expressionServices)) { var thisParameter = ResourceNaming.GetThisReferenceExpression(this); expressionServices.RegisterObject(this, thisParameter); }
/// <summary> /// Creates a new reactive processing query provider using the specified data operations object. /// </summary> /// <param name="provider">Data operations object to delegate operations to.</param> /// <param name="expressionServices">Expression services object, used to perform expression tree manipulations.</param> public ReactiveQueryProvider(IReactiveClientEngineProvider provider, IReactiveExpressionServices expressionServices) : base(expressionServices) { _provider = provider ?? throw new ArgumentNullException(nameof(provider)); }