En WCF se puede definir un contrato a través de los [DataContract]
y [DataMember]
atributos, como esto:¿Por qué no se recomienda el uso de [DataMember (EmitDefaultValue = false)]?
[DataContract]
public class Sample
{
[DataMember(EmitDefaultValue = false, IsRequired = false)]
public string Test { get; set; }
}
This article on the MSDN establece que no se recomienda el uso de EmitDefaultValue = false
:
Sin embargo, me gusta usar esto, porque el XML que se genera con esta construcción es más limpio. Si no se especifica este ajuste en resultados:
<Sample>
<Test xsi:nil="true"/>
</Sample>
durante el uso de la configuración del elemento se omite, cuando no hay ningún valor:
<Sample>
</Sample>
Tengo curiosidad por lo que es el razonamiento detrás de esa declaración. Específicamente, ya que ambos snipptes de XML parecen equivalentes a mí (y ambas últimas partes se pueden deserializar correctamente para este contrato).
¿Cuál es el razonamiento detrás de esta afirmación?
La parte importante de esto parece ser la preocupación interoperativa. Si utiliza la tecnología .net en ambos lados de la llamada y los contratos de datos fuertemente tipeados, no debería tener problemas. – Gent