Eu tenho uma classe com um int anulável? tipo de dados definido para serializar como um elemento xml. Existe alguma maneira de configurá-lo para que o serializador xml não serialize o elemento se o valor for nulo?
Tentei adicionar o atributo [System.Xml.Serialization.XmlElement (IsNullable = false)], mas recebo uma exceção de serialização de tempo de execução informando que houve um erro refletindo o tipo, porque "IsNullable não pode ser definido como 'false 'para um tipo Nullable. Considere usar o tipo' System.Int32 'ou remover a propriedade IsNullable do atributo 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;
}
}
...
}
A classe acima será serializada para:
<Score xmlns="http://mycomp.com/test/score/v1">
<ID xsi:nil="true" />
</Score>
Mas para IDs que são nulos, eu não quero o elemento ID, principalmente porque quando eu uso OPENXML no MSSQL, ele retorna 0 em vez de nulo para um elemento que se parece com