2017-10-19 156 views
-2

我有3個類,如下所示。Can not cast list <object> to list <custom object>

[Serializable] 
public class Classa { 
    public list<Object> list {get; set;} 
} 

[Serializable] 
public class Classb { 
    public string name {get; set;} 
    public string nickname {get; set;} 
} 


[Serializable] 
public class Classc { 
    public string type {get; set;} 
    public string price {get; set;} 
} 

在我的計劃,我想投List<Object>List<Classb>List<Classc>當我通過JSON結構匹配與ClassbClassc ...有沒有什麼辦法來投呢?

[HttpPost] 
[ActionName("Import")] 
[EnableCors(origins: "*", headers: "*", methods: "*")] 
public Object Import([FromBody]Classa ImportData) 
{ 

    List<Classb> blist = a.list.Cast<Classb>().toList(); 

} 

它拋出:

無法轉換類型 'Newtonsoft.Json.Linq.JObject' 的對象鍵入 'CLASSB'

我曾嘗試:

List<Classb> blist = aOfType<Classb>().ToList(); 

成功但沒有價值..

+0

哦..我自己修復它...只需轉換爲Jarray首先將修復它 –

回答

0

在Classa中,您有一個帶有對象的列表,但是您想要一個帶有Classb的列表。因此,改變這種

[Serializable] 
public class Classa{ 
list<Object> list{get;set;} 
} 

[Serializable] 
public class Classa{ 
list<Classb> list{get;set;} 
} 

List<Classb> blist = a.list.Cast<Classb>().toList(); 

可以是

List<Classb> blist = a.list; 

編輯: 你有一個錯字她

publc class Classb{ 
+0

我知道這是解決方案之一..但我有其他類例如classc ..我想把它放入列表所以我不能改變列表 btw謝謝你 –

+0

如果你想這樣做,你可以讓Classa有2個列表,Classb和Classc。但是如果你真的希望Classa只有一個列表。您創建一個新的ClassSuper並使Classb和Classc從ClassSuper擴展。 Classa將比ClassSuper有一個列表 –

相關問題