Все ли открытые члены для чтения / записи сериализуются с помощью XmlSerializer? - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть несколько открытых членов для чтения / записи, которые не сериализуются, и я не могу понять, почему. При просмотре некоторого кода мой корневой класс помечается как сериализуемый:

[Serializable]
public class MyClass

У меня есть конструктор по умолчанию, который инициализирует 10-15 string членов. В MyClass есть около 50 открытых членов строки для чтения / записи с get и set - ни для одного из них не заданы явные атрибуты сериализации. Сериализация выглядит так:

XmlSerializer x = new XmlSerializer(typeof(MyClass));
TextWriter twWriter = new StreamWriter(sFileName);
x.Serialize(twWriter, this);
twWriter.Close();

только немногие (20-30) из этих членов фактически выделены в мой XML-файл. что я упускаю или неправильно понимаю о XmlSerializer классе?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2010

Вы можете принудительно сериализовать свойство null в выводе, установив IsNullable в true в атрибуте XmlElement.

public class Example
{
    [XmlElement(IsNullable=true)]
    public string Text { get; set; }
}

Свойство Text теперь будет сериализовано как <Text xsi:nil="true" />.

С другой стороны, атрибут [Serializable] не требуется, если вы выполняете только сериализацию XML.

0 голосов
/ 16 апреля 2010

действительно, они не сериализуются, если они нулевые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...