Вместо использования свойства Value
приведите к string
... и вместо int
приведите к int?
.Определенные пользователем преобразования в обнуляемые типы будут возвращать нуль, если источник XAttribute
/ XElement
равен нулю:
FinalDeck = (from deck in xmlDoc.Root.Element("Cards")
.Elements("Card")
select new CardDeck
{
Name = (string) deck.Attribute("name"),
Image = (string) deck.Element("Image").Attribute("path"),
Usage = (int?) deck.Element("Usage"),
Type = (string) deck.Element("Type"),
Strength = (int?) deck.Element("Ability") ?? 0
}).ToList();
Обратите внимание, что это не поможет в случае, когдаЭлемент Image
отсутствует, так как тогда он попытается разыменовать нулевой элемент, чтобы найти атрибут path
.Дайте мне знать, если вы хотите обойти это, но это будет немного сложнее, условно говоря.
РЕДАКТИРОВАТЬ: Вы всегда можете создать метод расширения для этого самостоятельно:
public static XAttribute NullSafeAttribute(this XElement element, XName name)
{
return element == null ? null : element.Attribute(name);
}
Тогда назовите это так:
Image = (string) deck.Element("Image").NullSafeAttribute("path"),