DataMemberAttribute.EmitDefaultValue Proprietà

Definizione

Ottiene o imposta un valore che specifica se serializzare il valore predefinito per un campo o proprietà da serializzare.

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

Valore della proprietà

true se il valore predefinito per un membro deve essere generato nel flusso di serializzazione. In caso contrario, false. Il valore predefinito è true.

Esempio

Nell'esempio seguente viene illustrata la proprietà EmitDefaultValue impostata su false in vari campi.

[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

Commenti

In .NET Framework i tipi hanno un concetto di valori predefiniti. Ad esempio, per qualsiasi tipo di riferimento il valore predefinito è nulle per un tipo integer è 0. Quando un membro dati è impostato sul relativo valore predefinito, può talvolta essere opportuno ometterlo dai dati serializzati. A tal scopo, impostare la proprietà EmitDefaultValue su false (l'impostazione predefinita è true).

Nota

L'impostazione della proprietà EmitDefaultValue su false non è consigliata. Deve essere effettuata solo in caso di esigenze specifiche, ad esempio ai fini dell'interoperabilità o per ridurre la dimensione dei dati.

Si applica a