You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建Azure.AsyncPageable以模拟C#方法的返回值?

模拟返回Azure.AsyncPageable类型的C#方法方案

Azure.AsyncPageable没有公开构造函数,但可以通过其静态方法FromAsyncEnumerable,基于IAsyncEnumerable<T>创建实例,List等同步集合也能先转换为异步枚举再处理。

具体实现方式

  • 从IAsyncEnumerable直接创建
    调用AsyncPageable<T>.FromAsyncEnumerable传入异步枚举即可:

    public AsyncPageable<string> GetMockPageable()
    {
        var asyncEnumerable = new[] { "item1", "item2", "item3" }.ToAsyncEnumerable();
        return AsyncPageable<string>.FromAsyncEnumerable(asyncEnumerable);
    }
    

    (注:ToAsyncEnumerable需要引用System.Linq.Async NuGet包,也可以手动实现简单的IAsyncEnumerable)

  • 从List等同步集合转换创建
    先把同步集合包装成IAsyncEnumerable,再生成AsyncPageable:

    public AsyncPageable<int> GetMockPageableFromList()
    {
        var list = new List<int> { 1, 2, 3, 4 };
        
        async IAsyncEnumerable<int> WrapListAsync()
        {
            foreach (var item in list)
            {
                yield return item;
                // 可选:模拟异步操作延迟,贴近真实场景
                await Task.Delay(10);
            }
        }
        
        return AsyncPageable<int>.FromAsyncEnumerable(WrapListAsync());
    }
    

模拟真实分页行为(可选)

如果需要模拟分页返回逻辑,可在IAsyncEnumerable中手动控制分批输出:

public AsyncPageable<MyModel> GetPagedMockData()
{
    var allItems = Enumerable.Range(1, 10).Select(i => new MyModel { Id = i, Name = $"Item {i}" });
    const int pageSize = 3;

    async IAsyncEnumerable<MyModel> PagedAsyncEnumerable()
    {
        var pages = allItems.Chunk(pageSize);
        foreach (var page in pages)
        {
            foreach (var item in page)
            {
                yield return item;
            }
            // 模拟分页请求的异步等待
            await Task.Delay(50);
        }
    }

    return AsyncPageable<MyModel>.FromAsyncEnumerable(PagedAsyncEnumerable());
}

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

内容的提问来源于stack exchange,提问作者Claus Appel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:02:28