У меня есть класс с обнуляемым int? тип данных установлен для сериализации как элемент xml. Есть ли способ настроить его так, чтобы сериализатор xml не сериализовал элемент, если значение равно нулю?
Я пытался добавить атрибут [System.Xml.Serialization.XmlElement (IsNullable = false)], но получаю исключение сериализации во время выполнения, в котором говорится, что произошла ошибка, отражающая тип, потому что для параметра IsNullable не может быть установлено значение 'false "для типа, допускающего значение NULL. Рассмотрите возможность использования типа" System.Int32 "или удаления свойства IsNullable из атрибута XmlElement".
[Serializable]
[System.Xml.Serialization.XmlRoot("Score", Namespace = "http://mycomp.com/test/score/v1")]
public class Score
{
private int? iID_m;
...
/// <summary>
///
/// </summary>
public int? ID
{
get
{
return iID_m;
}
set
{
iID_m = value;
}
}
...
}
Вышеупомянутый класс будет сериализован в:
<Score xmlns="http://mycomp.com/test/score/v1">
<ID xsi:nil="true" />
</Score>
Но для идентификаторов с нулевым значением мне вообще не нужен элемент идентификатора, в первую очередь потому, что, когда я использую OPENXML в MSSQL, он возвращает 0 вместо нуля для элемента, который выглядит как