[英]How can I cast a class object to a list?
我对C#相当陌生,在将对象转换为List<T>
遇到问题。 我一直在收到错误消息“无法将类型Attachment
隐式转换为System.Collections.Generic.List<Attachment>
。我已经查看了很多有关类似错误的文章,但我似乎无法弄清楚我迷路了。
我的核心对象如下所示:
public class Attachment
{
public Attachment() { }
...
}
它在另一个类的构造函数中被调用,如下所示:
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>
的代码的最后一行。 我了解该消息在说什么,但我尝试过的所有方法均无效。
您正在将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";
那是什么意思? 这些是完全不同的类型。 这有点像您要编译器执行的转换。 左侧的类型必须是(或的多态父代)右侧的类型。
只需使用ToObject
方法
List<Attachment> attachments = jobj["attachments"].ToObject<List<Attachment>>();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.