/// <summary>
        /// 初始化枚举迭代器的新实例
        /// </summary>
        /// <param name="move">获取下一页数据的委托</param>
        /// <param name="startPageIndex">起始页</param>
        /// <param name="pageSize">每个页面的数据数量</param>
        /// <param name="total"></param>
        public PageEnumerator(PageMoveDelegate <T> move,
                              int startPageIndex,
                              int pageSize,
                              int total)
        {
            _move = move ?? throw new ArgumentNullException(nameof(move));

            _startPageIndex = startPageIndex < 0
                ? throw new ArgumentOutOfRangeException(nameof(startPageIndex))
                : startPageIndex;

            _pageSize = pageSize < 0
                ? throw new ArgumentOutOfRangeException(nameof(pageSize))
                : pageSize;

            _total = total < 0
                ? throw new ArgumentOutOfRangeException(nameof(total))
                : total;

            _currentPageIndex = startPageIndex;

            _currentPageDatas = move(startPageIndex, pageSize, CancellationToken.None)
                                .ConfigureAwait(false)
                                .GetAwaiter()
                                .GetResult();

            TotalPageCount = (int)Math.Ceiling((total * 1.0) / pageSize);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 初始化分页的枚举
        /// </summary>
        /// <param name="move">用于开始翻页的委托</param>
        /// <param name="startPageIndex">起始页</param>
        /// <param name="pageSize">每页获取数据的数量</param>
        /// <param name="total"></param>
        public PageEnumerable(PageMoveDelegate <T> move,
                              int startPageIndex,
                              int pageSize,
                              int total)
        {
            _move = move ?? throw new ArgumentNullException(nameof(move));

            _total = total < 0
                ? throw new ArgumentOutOfRangeException(nameof(total), ERROR_TOTAL)
                : total;

            _startPageIndex = startPageIndex < 1
                ? throw new ArgumentOutOfRangeException(nameof(startPageIndex), ERROR_STARTPAGE)
                : startPageIndex;

            _pageSize = pageSize < 0
                ? throw new ArgumentOutOfRangeException(nameof(pageSize), ERROR_PAGESIZE)
                : pageSize;
        }