如何将类对象转换为列表?

时间:2014-08-20 18:56:53

标签: c# generics

我对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>。我理解这条消息的内容,但我尝试过的所有内容都无法发挥作用。

2 个答案:

答案 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>>();