2011-04-11 67 views
0

可能不是特定於Web服務,但...asp.net web服務對象的操作

我有一個返回一個WebMethod:

List<Tadpole> myList = getList(); 

return new { data = myList , count = 5 }; 

它返回的JSON。

我的代碼檢查myList[x].fishsticks這實際上不是Tadpole類的一部分(所以它的錯誤)。我想知道,我可以以某種方式添加fishsticks屬性到myList以避免錯誤,所以當我返回數據時它會被包含在內?

這樣做可能是另一個優雅的解決方案嗎?

回答

2

在您的示例中,您必須將fishsticks屬性添加到Tadpole

public class Tadpole 
{ 
    //.... 
    public int Fishsticks { get; set; } 
} 

另外,爲什麼要補充一個.Count屬性的JSON類型?難道只有.data.Count才更有意義,或者只是返回列表並完全跳過包裝?

我沒有檢查是什麼性質的List<>得到最近連載,所以它可能是它不包括在內,但即使是這樣的情況下,它會更有意義要做到這一點:

List<Tadpole> myList = getList(); 

return new { data = myList , count = myList.Count }; 

或者,創建一個覆蓋.Count並添加序列化屬性的後代類。

編輯

如果我沒有記錯,匿名/動態類型在內部實現字典,而類是,哦,不是。 (順便說一句,匿名類型和動態對象帶來的性能和維護的一系列問題與他們相處。)

如果你不想修改蝌蚪出於某種原因,你總是可以創建一個子類:

public class HungryTadpole : TadPole 
{ 
    public int FishSticks { get; set; } 
} 

強打字是你的朋友,並會爲你節省很多頭痛的道路。

+0

很酷,不知道是否有一些漂亮的匿名類型的方法添加屬性。我會去做。至於計數,它實際上返回可用的項目總數,而數據只是返回前10名的結果或任何請求(所以它知道有多少頁面投入尋呼控制) – NibblyPig 2011-04-11 15:33:25

+0

@SLC好吧,我可以理解那。查看更新。 (你可能會考慮給他們更有意義的名字,比如TotalRecordsAvailable和Top10Records等等。 – 2011-04-11 15:44:21