繁体   English   中英

返回值是IEnumerable而不是IPaged

[英]the return value is IEnumerable and not IPaged

我使用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>]优先于其他任何东西,并跳入“ colllection of”分支(忽略在上定义的任何属性)是常见的“容器”)。

这样,我希望您最好的选择是不要使用IPaged<T>实现IEnumerable<T> 这可能意味着必须更改一些位置来添加.Items

另一种方法是添加一个ForJson()扩展方法,该方法返回类似于 IPaged<T> ,但不实现IEnumerable[<T>]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM