Condividi tramite


DataMemberAttribute.EmitDefaultValue Proprietà

Definizione

Ottiene o imposta un valore che specifica se serializzare il valore predefinito per un campo o una 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 EmitDefaultValue proprietà impostata false su 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. Occasionalmente è consigliabile omettere un membro dati dai dati serializzati quando è impostato sul valore predefinito. A tale scopo, impostare la EmitDefaultValue proprietà su false (per true impostazione predefinita).

Annotazioni

L'impostazione della EmitDefaultValue proprietà su false non è una procedura consigliata. Questa operazione deve essere eseguita solo se è necessario eseguire questa operazione, ad esempio per l'interoperabilità o per ridurre le dimensioni dei dati.

Si applica a