DataMemberAttribute.EmitDefaultValue Property
Gets or sets a value that specifies whether to serialize the default value for a field or property being serialized.
Assembly: System.Runtime.Serialization (in System.Runtime.Serialization.dll)
Property Value
Type: System.Booleantrue if the default value for a member should be generated in the serialization stream; otherwise, false. The default is true.
In the .NET Framework, types have a concept of default values. For example, for any reference type the default value is null, and for an integer type it is 0. It is occasionally desirable to omit a data member from the serialized data when it is set to its default value. To do this, set the EmitDefaultValue property to false (it is true by default).
Note |
|---|
Setting the EmitDefaultValue property to false is not a recommended practice. It should only be done if there is a specific need to do so (such as for interoperability or to reduce data size). |
The following example shows the EmitDefaultValue property set to false on various fields.
<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
Available since 8
.NET Framework
Available since 3.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
