Я новичок в С#, и мне трудно преобразовать объект в 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>>();
Attachment
не являетсяList
, почему это вас удивляет? Или вы хотели добавить его вList
?