Вы можете создать функцию с шаблоном ShouldSerialize{PropertyName}
, которая сообщает XmlSerializer, должен ли он сериализовать элемент или нет.
Например, если ваше свойство класса называется MyNullableInt
, вы можете иметь
public bool ShouldSerializeMyNullableInt()
{
return MyNullableInt.HasValue;
}
Вот полный образец
public class Person
{
public string Name {get;set;}
public int? Age {get;set;}
public bool ShouldSerializeAge()
{
return Age.HasValue;
}
}
Сериализуется со следующим кодом
Person thePerson = new Person(){Name="Chris"};
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, thePerson);
Результаты в следующем XML - Обратите внимание, что возраст не существует
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Chris</Name>
</Person>