У меня есть класс с обнуляемым int? тип данных установлен для сериализации в виде элемента xml. Есть ли способ настроить его так, чтобы сериализатор xml не сериализовал элемент, если значение равно нулю?
Я пытался добавить атрибут [System.Xml.Serialization.XmlElement (IsNullable = false)], но я получаю исключение сериализации во время выполнения, сообщающее, что произошла ошибка, отражающая тип, потому что "IsNullable не может быть установлен в «false» для типа Nullable. Попробуйте использовать тип «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>
Но для идентификаторов, которые являются нулевыми, я вообще не хочу элемент ID, в первую очередь потому, что когда я использую OPENXML в MSSQL, он возвращает 0 вместо нуля для элемента, который выглядит как