/// <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)); }
// Декоратор для 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)); }