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

Tre*_*bor 1 c# generics

我对C#很新,我无法将对象转换为List<T>.我一直收到错误"无法隐式类型转换AttachmentSystem.Collections.Generic.List<Attachment>.有很多关于我看过了类似的错误的职位,但我似乎无法找出什么我失踪.

我的核心对象如下:

public class Attachment 
{
    public Attachment() { }
    ...
}
Run Code Online (Sandbox Code Playgroud)

它在另一个类的构造函数中被调用,如下所示:

public class MyClass
{
    ...
    public List<Attachment> attachments { get; set; };
    ...
    public MyClass(JObject jobj)
    {
        ...
        //Attachments
        if (jobj["attachments"] != null)
        {
            attachments = (Attachment)jobj.Value<Attachment>("attachments");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误发生在代码的最后一行,我正在尝试将我的Attachment对象强制转换为List<attachments>.我理解这条消息的内容,但我尝试过的一切都行不通.

Mat*_*gen 6

你正在设置List<T>一个T.

attachments = (Attachment)jobj.Value<Attachment>("attachments");
Run Code Online (Sandbox Code Playgroud)

相反,您可能想要添加它.但是不要忘记首先实例化列表.

attachments = new List<Attachment>();
attachments.Add((Attachment)jobj.Value<Attachment>("attachments"));
Run Code Online (Sandbox Code Playgroud)

以不涉及泛型的术语来考虑它.说我有一个int x,我把它设置为string常数.

int x = "test";
Run Code Online (Sandbox Code Playgroud)

那是什么意思?这些是完全不同的类型.这有点像你要求编译器执行的转换.左侧的类型必须是(右侧的类型的多态父级).