/// <summary>
        /// Wrap <see cref="IQueryable{T}"/> to decorator that intercepts
        /// IQueryable.Expression with provided <see cref="ExpressionVisitor"/>.
        /// </summary>
        public static IQueryable <T> AsVisitable <T>(
            this IQueryable <T> queryable, params ExpressionVisitor[] visitors)
        {
            if (queryable == null)
            {
                throw new ArgumentNullException(nameof(queryable));
            }
            if (visitors == null)
            {
                throw new ArgumentNullException(nameof(visitors));
            }

            return(queryable as VisitableQuery <T>
                   ?? VisitableQueryFactory <T> .Create(queryable, visitors));
        }
Beispiel #2
0
 // Декоратор для IQueryable<T>, который вызовет наш ExpressionVisitor.
 internal static IQueryable <T> AsVisitable <T>(this IQueryable <T> queryable, params ExpressionVisitor[] visitors)
 {
     return(queryable as VisitableQuery <T> ?? VisitableQueryFactory <T> .Create(queryable, visitors));
 }