DataMemberAttribute.EmitDefaultValue Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob der Standardwert eines Felds oder einer Eigenschaft serialisiert werden soll, oder legt einen Wert fest.

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

Eigenschaftswert

true, wenn der Standardwert für einen Member im Serialisierungsstream generiert werden sollte, andernfalls false. Der Standardwert ist true.

Beispiele

Im folgenden Beispiel wird dargestellt, wie die EmitDefaultValue-Eigenschaft in verschiedenen Feldern auf false festgelegt ist.

[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

Hinweise

Im .NET Framework verfügen Typen über ein Konzept von Standardwerten. Beispielsweise ist nullder Standardwert für jeden Verweistyp , und für einen ganzzahligen Typ ist er 0. Von Zeit zu Zeit ist es empfehlenswert, einen Datenmember aus den serialisierten Daten auszulassen, wenn er auf seinen Standardwert festgelegt ist. Legen Sie hierzu die EmitDefaultValue-Eigenschaft auf false fest (die Standardeinstellung ist true).

Hinweis

Die EmitDefaultValue-Eigenschaft auf false festzulegen, ist keine empfohlene Vorgehensweise. Dies sollte nur erfolgen, wenn eine spezielle Anforderung hierfür besteht (wie Interoperabilität oder eine Verringerung der Datengröße).

Gilt für: