DataMemberAttribute.EmitDefaultValue Propiedad

Definición

Obtiene o establece un valor que especifica si se debe serializar el valor predeterminado para un campo o propiedad que se está serializando.

public:
 property bool EmitDefaultValue { bool get(); void set(bool value); };
public bool EmitDefaultValue { get; set; }
member this.EmitDefaultValue : bool with get, set
Public Property EmitDefaultValue As Boolean

Valor de propiedad

Boolean

true si el valor predeterminado para un miembro se debe generar en la secuencia de la serialización; de lo contrario, false. De manera predeterminada, es true.

Ejemplos

En el ejemplo siguiente se muestra la propiedad EmitDefaultValue establecida en false en diversos campos.

[DataContract]
public class Employee
{
    // The CLR default for as string is a null value.
    // This will be written as <employeeName xsi:nill="true" />
    [DataMember]
    public string EmployeeName = null;

    // This will be written as <employeeID>0</employeeID>
    [DataMember]
    public int employeeID = 0;

    // The next three will not be written because the EmitDefaultValue = false.
    [DataMember(EmitDefaultValue = false)]
    public string position = null;
    [DataMember(EmitDefaultValue = false)]
    public int salary = 0;
    [DataMember(EmitDefaultValue = false)]
    public int? bonus = null;

    // This will be written as <targetSalary>57800</targetSalary>
    [DataMember(EmitDefaultValue = false)]
    public int targetSalary = 57800;
}
<DataContract()>  _
Public Class Employee
    ' The CLR default for as string is a null value.
    ' This will be written as <employeeName xsi:nil="true" />
    <DataMember()>  _
    Public employeeName As String = Nothing
    
    ' This will be written as <employeeID>0</employeeID>
    <DataMember()>  _
    Public employeeID As Integer = 0
    
    ' The next two will not be written because the EmitDefaultValue = false.
    <DataMember(EmitDefaultValue := False)> Public position As String = Nothing
    <DataMember(EmitDefaultValue := False)> Public salary As Integer = 0

    ' This will be written as <targetSalary>555</targetSalary> because 
    ' the 555 does not match the .NET default of 0.
    <DataMember(EmitDefaultValue := False)> Public targetSalary As Integer = 555
End Class

Comentarios

En .NET Framework, los tipos tienen un concepto de los valores predeterminados. Por ejemplo, para cualquier tipo de referencia, el valor predeterminado es null, y para un tipo entero es 0. En ocasiones es deseable omitir un miembro de datos de los datos serializados cuando está establecido en su valor predeterminado. Para ello, establezca la propiedad EmitDefaultValue en false (de manera predeterminada, es true).

Nota

No se recomienda establecer la propiedad EmitDefaultValue en false. Sólo debe hacerse si así lo exige una necesidad concreta (como para la interoperabilidad o para reducir el tamaño de los datos).

Se aplica a