2011-09-11 5 views
2

をIPagedではありません>結果:戻り値は、私がIPaged <を返すためにScriptServicesを使用してIEnumerableと

[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の実装から返されたページ単位の<>クラスIP化された<>が実装されているため、IEnumerator GetEnumerator()

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

私はJavascript ajaxからDoSomethingを呼び出すたびに、スクリプトサービスエンジンはIEnumerableインスタンスを返し、IPagedではないので、配列(GetEnumerator()メソッドからItemsメンバー)を取得します。

スクリプトサービスからIEnumerable <>が返されますが、どうすれば返されますか?

答えて

1

推測のビットが、それは他の何よりも優先し、ブランチ(「コンテナ」に定義されたすべてのプロパティを無視して「のcolllection」にジャンプすることもIEnumerable[<T>]のために非常に共通(そして時にはIList[<T>]です)。このように

、私はあなたの最善の策は、IEnumerable<T>を実装IPaged<T>を持っていないことです期待しています。 これは.Itemsを追加するためにいくつかの場所を変更することを意味してもよい。

別のアプローチでしょうForJson()拡張メソッドを追加することと同様のIPaged<T>が返されますが、IEnumerable[<T>]は実装されていません。

関連する問題