/// <summary> /// Clones this dependency parameter object with one service replaced. /// </summary> /// <param name="eagerLoadingExpressionVisitorFactory"> A replacement for the current dependency of this type. </param> /// <returns> A new parameter object with the given service replaced. </returns> public EntityQueryModelVisitorDependencies With([NotNull] IEagerLoadingExpressionVisitorFactory eagerLoadingExpressionVisitorFactory) => new EntityQueryModelVisitorDependencies( QueryOptimizer, QuerySourceTracingExpressionVisitorFactory, EntityResultFindingExpressionVisitorFactory, eagerLoadingExpressionVisitorFactory, TaskBlockingExpressionVisitor, MemberAccessBindingExpressionVisitorFactory, ProjectionExpressionVisitorFactory, EntityQueryableExpressionVisitorFactory, QueryAnnotationExtractor, ResultOperatorHandler, EntityMaterializerSource, ExpressionPrinter, QueryModelGenerator);
/// <summary> /// <para> /// Creates the service dependencies parameter object for a <see cref="EntityQueryModelVisitorFactory" />. /// </para> /// <para> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </para> /// <para> /// Do not call this constructor directly from either provider or application code as it may change /// as new dependencies are added. Instead, use this type in your constructor so that an instance /// will be created and injected automatically by the dependency injection container. To create /// an instance with some dependent services replaced, first resolve the object from the dependency /// injection container, then replace selected services using the 'With...' methods. Do not call /// the constructor at any point in this process. /// </para> /// </summary> /// <param name="queryOptimizer"> The <see cref="IQueryOptimizer" /> to be used when processing the query. </param> /// <param name="navigationRewritingExpressionVisitorFactory"> /// The <see cref="INavigationRewritingExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="querySourceTracingExpressionVisitorFactory"> /// The <see cref="IQuerySourceTracingExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="entityResultFindingExpressionVisitorFactory"> /// The <see cref="IEntityResultFindingExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="eagerLoadingExpressionVisitorFactory"> /// The <see cref="IEagerLoadingExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="taskBlockingExpressionVisitor"> The <see cref="ITaskBlockingExpressionVisitor" /> to be used when processing the query. </param> /// <param name="memberAccessBindingExpressionVisitorFactory"> /// The <see cref="IMemberAccessBindingExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="projectionExpressionVisitorFactory"> /// The <see cref="IProjectionExpressionVisitorFactory" /> to be used when processing the /// query. /// </param> /// <param name="entityQueryableExpressionVisitorFactory"> /// The <see cref="IEntityQueryableExpressionVisitorFactory" /> to be used when /// processing the query. /// </param> /// <param name="queryAnnotationExtractor"> The <see cref="IQueryAnnotationExtractor" /> to be used when processing the query. </param> /// <param name="resultOperatorHandler"> The <see cref="IResultOperatorHandler" /> to be used when processing the query. </param> /// <param name="entityMaterializerSource"> The <see cref="IEntityMaterializerSource" /> to be used when processing the query. </param> /// <param name="expressionPrinter"> The <see cref="IExpressionPrinter" /> to be used when processing the query. </param> /// <param name="queryModelGenerator"> The <see cref="IQueryModelGenerator" /> to be used when processing the query. </param> public EntityQueryModelVisitorDependencies( [NotNull] IQueryOptimizer queryOptimizer, [NotNull] INavigationRewritingExpressionVisitorFactory navigationRewritingExpressionVisitorFactory, [NotNull] IQuerySourceTracingExpressionVisitorFactory querySourceTracingExpressionVisitorFactory, [NotNull] IEntityResultFindingExpressionVisitorFactory entityResultFindingExpressionVisitorFactory, [NotNull] IEagerLoadingExpressionVisitorFactory eagerLoadingExpressionVisitorFactory, [NotNull] ITaskBlockingExpressionVisitor taskBlockingExpressionVisitor, [NotNull] IMemberAccessBindingExpressionVisitorFactory memberAccessBindingExpressionVisitorFactory, [NotNull] IProjectionExpressionVisitorFactory projectionExpressionVisitorFactory, [NotNull] IEntityQueryableExpressionVisitorFactory entityQueryableExpressionVisitorFactory, [NotNull] IQueryAnnotationExtractor queryAnnotationExtractor, [NotNull] IResultOperatorHandler resultOperatorHandler, [NotNull] IEntityMaterializerSource entityMaterializerSource, [NotNull] IExpressionPrinter expressionPrinter, [NotNull] IQueryModelGenerator queryModelGenerator) { Check.NotNull(queryOptimizer, nameof(queryOptimizer)); Check.NotNull(navigationRewritingExpressionVisitorFactory, nameof(navigationRewritingExpressionVisitorFactory)); Check.NotNull(querySourceTracingExpressionVisitorFactory, nameof(querySourceTracingExpressionVisitorFactory)); Check.NotNull(entityResultFindingExpressionVisitorFactory, nameof(entityResultFindingExpressionVisitorFactory)); Check.NotNull(eagerLoadingExpressionVisitorFactory, nameof(eagerLoadingExpressionVisitorFactory)); Check.NotNull(taskBlockingExpressionVisitor, nameof(taskBlockingExpressionVisitor)); Check.NotNull(memberAccessBindingExpressionVisitorFactory, nameof(memberAccessBindingExpressionVisitorFactory)); Check.NotNull(projectionExpressionVisitorFactory, nameof(projectionExpressionVisitorFactory)); Check.NotNull(entityQueryableExpressionVisitorFactory, nameof(entityQueryableExpressionVisitorFactory)); Check.NotNull(queryAnnotationExtractor, nameof(queryAnnotationExtractor)); Check.NotNull(resultOperatorHandler, nameof(resultOperatorHandler)); Check.NotNull(entityMaterializerSource, nameof(entityMaterializerSource)); Check.NotNull(expressionPrinter, nameof(expressionPrinter)); Check.NotNull(queryModelGenerator, nameof(queryModelGenerator)); QueryOptimizer = queryOptimizer; NavigationRewritingExpressionVisitorFactory = navigationRewritingExpressionVisitorFactory; QuerySourceTracingExpressionVisitorFactory = querySourceTracingExpressionVisitorFactory; EntityResultFindingExpressionVisitorFactory = entityResultFindingExpressionVisitorFactory; EagerLoadingExpressionVisitorFactory = eagerLoadingExpressionVisitorFactory; TaskBlockingExpressionVisitor = taskBlockingExpressionVisitor; MemberAccessBindingExpressionVisitorFactory = memberAccessBindingExpressionVisitorFactory; ProjectionExpressionVisitorFactory = projectionExpressionVisitorFactory; EntityQueryableExpressionVisitorFactory = entityQueryableExpressionVisitorFactory; QueryAnnotationExtractor = queryAnnotationExtractor; ResultOperatorHandler = resultOperatorHandler; EntityMaterializerSource = entityMaterializerSource; ExpressionPrinter = expressionPrinter; QueryModelGenerator = queryModelGenerator; }