我对C#很新,我在将对象转换为List<T>
时遇到问题。我一直在收到错误&#34;无法将Attachment
隐式转换为System.Collections.Generic.List<Attachment>
。我发现有很多关于类似错误的帖子,但我似乎无法弄清楚我错过了什么。
我的核心对象如下:
public class Attachment
{
public Attachment() { }
...
}
它被另一个班级召唤了#39;像这样的构造函数:
public class MyClass
{
...
public List<Attachment> attachments { get; set; };
...
public MyClass(JObject jobj)
{
...
//Attachments
if (jobj["attachments"] != null)
{
attachments = (Attachment)jobj.Value<Attachment>("attachments");
}
}
}
错误发生在最后一行代码中,我试图将我的Attachment对象强制转换为List<attachments>
。我理解这条消息的内容,但我尝试过的所有内容都无法发挥作用。
答案 0 :(得分:6)
您正在将List<T>
设置为T
。
attachments = (Attachment)jobj.Value<Attachment>("attachments");
相反,您可能希望添加它。但不要忘记首先实例化列表。
attachments = new List<Attachment>();
attachments.Add((Attachment)jobj.Value<Attachment>("attachments"));
以不涉及泛型的术语来思考。假设我有int x
并将其设置为string
常量。
int x = "test";
这意味着什么?这些是完全不同的类型。这有点像你要求编译器执行的转换。左边的类型必须是(右边的类型的多态父或)。
答案 1 :(得分:3)
只需使用ToObject
方法
List<Attachment> attachments = jobj["attachments"].ToObject<List<Attachment>>();