using System.Linq.Expressions; namespace Core.Specifications { public class BaseSpecification : ISpecification { public BaseSpecification() { } public BaseSpecification(Expression> criteria) { Criteria = criteria; } public Expression> Criteria { get; } public List>> Includes { get; } = new List>>(); public Expression> OrderBy {get; private set;} public Expression> OrderByDecending {get; private set;} public int Take {get; private set;} public int Skip {get; private set;} public bool IsPagingEnabled {get; private set;} protected void AddInclude(Expression> includeExpression) { Includes.Add(includeExpression); } protected void AddOrderBy(Expression> orderByExpression) { OrderBy = orderByExpression; } protected void AddOrdeByDescending(Expression> orderByDescExpression) { OrderByDecending = orderByDescExpression; } protected void ApplyPaging(int skip, int take) { Skip = skip; Take = take; IsPagingEnabled = true; } } }