2017-10-19 126 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有一个列表 –

相关问题