Всегда ли значение атрибута XML Elements представляет собой строку?

Когда я создаю XML-документ с помощью LINQ, когда я добавляю некоторый XElement в корневой элемент с некоторыми атрибутами и когда я читаю XElement этого документа с помощью LINQ, возвращаемое значение XAttributes.Value по умолчанию является строкой!
Чтобы присвоить это значение типу переменной bool, необходимо вызвать функцию "Convert.ToBoolean ()"

  XDocument Xd = new XDocument(new XElement("Numbers"));
  Xd.Root.Add(new XElement("13", new XAttribute("Name", "13")
                               , new XAttribute("IsEvenNumber", false)
                               , new XAttribute("HowManyDevidersItHas", 2)));
  Xd.Save(@"C:\XDocument.xml");
  bool b1 = Convert.ToBoolean(XD1.Root.Element("13").Attribute("IsEvenNumber").Value);
  ...

Как видите:
значение XAttribute с именем «Name» должно быть длинного типа!
значение XAttribute с именем «IsEvenNumber» должно быть типа bool!

Мне нужно знать: можно ли создать XElement с некоторыми XAttributes, сохранить его, прочитать еще раз и присвоить его XAttributes.Value некоторой переменной типа bool без вызова функции «Convert.ToBoolean ()» ?!


person IremadzeArchil19910311    schedule 15.10.2014    source источник
comment
Вы можете создавать классы со строго типизированными членами и сериализовать / десериализовать объекты. Преобразование будет выполнено автоматически.   -  person Andrei V    schedule 15.10.2014
comment
или без ... приведения: я имею в виду без ... bool b1 = (bool) (XD1.Root.Element (13) .Attribute (IsEvenNumber) .Value)   -  person IremadzeArchil19910311    schedule 15.10.2014


Ответы (1)


К сожалению, нет, свойство XElement.Value выглядит строкой.

http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.value(v=vs.90).aspx

Таким образом, вам всегда придется приводить значение к вашему типу данных.

person KnottytOmo    schedule 15.10.2014