gpt4 book ai didi

c# - 返回值是 IEnumerable 而不是 IPaged

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:35 26 4
gpt4 key购买 nike

我使用 ScriptServices 返回 IPaged<> 结果:

[WebService]
public IPaged<int> DoSomething() {
....
....
}

IPaged<> 是:

public interface IPaged<T> : IEnumerable where T : class
{
int PageNumber { get; }
int PageSize { get; }
IEnumerable<T> Items { get; }
int PagesCount { get; }
int TotalItemsCount { get; }
}

从 DoSomething 返回的 Paged<> 类实现了 IPaged<>,因此实现了 IEnumerator GetEnumerator():

  public IEnumerator GetEnumerator()
{
return ((IEnumerable)Items).GetEnumerator();
}

每当我从 Javascript ajax 调用 DoSomething 时,脚本服务引擎返回 IEnumerable 实例而不是 IPaged,因此我得到一个数组(来自 GetEnumerator() 方法的 Items 成员)。

如何从脚本服务返回 IPaged<> 而不是 IEnumerable<>?

最佳答案

有点猜测,但对于 IEnumerable[<T>]非常常见(有时 IList[<T>] 优先于其他任何事情,并跳入“集合”分支(忽略“容器”上定义的任何属性)。

因此,我希望您最好的选择是没有 IPaged<T>实现 IEnumerable<T> .这可能意味着必须更改一些地方以添加 .Items .

另一种方法是添加 ForJson()返回类似于 IPaged<T> 的内容的扩展方法。 , 但没有实现 IEnumerable[<T>] .

关于c# - 返回值是 IEnumerable 而不是 IPaged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7378068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com