2012-06-16 102 views
1

我创建了一个retreives JSON和分析它的通用功能:将IList <Object>投射到IList <CustomObject>?

public IList<Object> RetrieveView(string result) 
    { 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 

     IList<Object> values = ser.Deserialize< IList<Object> >(result); 

     return values; 
    } 

,我有很多使用这个类的问题。 例如,当我尝试使用此:

IList<Receipt> receipts = (IList<Receipt>)RetrieveView(result); 

我得到InvalidCastExceptionUnable to cast object of type 'System.Collections.Generic.List[System.Object]' to type 'System.Collections.Generic.IList[Receipt]'.

反正让我的通用功能,并能够将其转换为我所有的类/型号的?

+0

你的JSON的外观和你的'Reciept'类是什么? –

回答

6

让你的函数通用:

public IList<T> RetrieveView<T>(string result) 
    { 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 

     IList<T> values = ser.Deserialize< IList<T> >(result); 

     return values; 
    } 
4

如果对象进行反序列化的收据,你可以使用可枚举扩展。

IList<Receipt> receipts = RetrieveView(result).Cast<Receipt>().ToList(); 
+0

是的!如果可以的话,1000票。 – bwperrin

相关问题