Ответ 1
Это похоже на то, что класс LookupItem
не имеет дочернего элемента в представлении XML. Из-за этого XmlSerializer
считает, что это элемент simpleContent XML. Если вы добавите новое свойство в LookupItem
, которое должно быть сериализовано как элемент XML, оно отлично работает.
Я просто потратил несколько минут на поиск доступных атрибутов сериализации XML, но я не смог найти ни одного, который позволил бы указать, что тип НЕ является элементом simpleContent
...
Итак, я думаю, вы можете заставить его работать, добавив фиктивное свойство или поле, которое вы никогда не используете в классе LookupItem
. Если вы никогда не назначаете ему значение, оно останется нулевым и не будет сериализовано, но это предотвратит обращение вашего класса к simpleContent
. Я знаю, что это грязный обходной путь, но я не вижу другого легкого пути...
public class LookupItem
{
[System.Xml.Serialization.XmlAttribute()]
public int ID { get; set; }
[System.Xml.Serialization.XmlText()]
public string Name { get; set; }
public object _dummy;
}
(Кстати, обратите внимание, что атрибут Serializable
не требуется для сериализации XML.)
В любом случае, вам действительно нужно сериализовать Name
как текст XML? Это довольно необычно, обычно элементы XML имеют либо простой контент (текст), либо дочерние элементы... Смешение обоих делает XML более трудным для чтения, поэтому, если вы не вынуждены это делать, я предлагаю вам сериализовать Name
как атрибут или дочерний элемент.