Aracılığıyla paylaş


DataMemberAttribute.EmitDefaultValue Özellik

Tanım

Seri hale getirilen bir alan veya özellik için varsayılan değerin serileştirilip serileştirilmeyeceğini belirten bir değer alır veya ayarlar.

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

Özellik Değeri

true serileştirme akışında bir üye için varsayılan değer oluşturulmalıdır; aksi takdirde , false. Varsayılan değer: true.

Örnekler

Aşağıdaki örnekte, çeşitli alanlarda özelliğinin EmitDefaultValue olarak ayarlandığı false gösterilmektedir.

[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

Açıklamalar

.NET Framework türlerde varsayılan değerler kavramı vardır. Örneğin, herhangi bir başvuru türü için varsayılan değer olur nullve bir tamsayı türü için 0'dır. Bazen, varsayılan değerine ayarlandığında serileştirilmiş verilerden bir veri üyesinin atlanmış olması tercih edilir. Bunu yapmak için özelliğini false olarak ayarlayın EmitDefaultValue (varsayılan olarak).true

Not

özelliğini false olarak EmitDefaultValue ayarlamak önerilen bir uygulama değildir. Yalnızca belirli bir gereklilik söz konusuysa (birlikte çalışabilirlik veya veri boyutunu küçültme gibi) yapılmalıdır.

Şunlara uygulanır