2011-06-06 10 views
9

Si tengo la clase siguiente:¿Es posible tener DataMembers opcionales en WCF?

[DataContract] 
public class GetColorsRS 
{ 
    [DataMember(Name = "Colors", Order = 0, IsRequired=true)] 
    public List<Color> Colors { get; set; } 

    [DataMember(Name = "Errors", Order = 1, IsRequired=false)] 
    public List<Error> Errors { get; set; } 
} 

Si no se encuentran errores en la solicitud, quiero enviar de vuelta una respuesta que no tiene un nodo de errores, sin embargo, pasa de vuelta un nodo de errores que es vacío. Pensé que esto era para lo que era IsRequired.

Recién notado EmitDefaultValue, ¿es esto lo que estoy buscando?

+0

¿Por qué no tener una lista vacía de errores? Básicamente logra lo mismo (sin ningún tipo de truco o truco)? –

+1

@marc_s, también puedo hacerlo. Pero establecer EmitDefaultValue = false no es un truco ni un truco. – Xaisoft

+0

Tenga cuidado: http://stackoverflow.com/questions/5382402/why-is-using-datamemberemitdefaultvalue-false-not-recommended –

Respuesta

14

He determinado que EmitDefaultValue debe establecerse en falso si no deseo serializar el valor predeterminado del DataMember.

[DataMember(Name = "Errors", Order = 1, IsRequired=false,EmitDefaultValue=false)] 
public List<Error> Errors { get; set; } 
Cuestiones relacionadas