A Windows Communication Foundation (WCF) application uses the following data contract
[DataContract]
public class Person
{
[DataMember]
public string firstName;
[DataMember]
public string lastName;
[DataMember]
public int age;
[DataMember]
public int ID;
}
You need to ensure that the following XML segment is generated when the data contract is serialized.
<Person>
<firstName xsi:nil=”true”/>
<lastName xsi:nil=”true”/>
<ID>999999999<ID>
</Person>
Which code segment should you use?
A.
[DataMember]
public string firstName;
[DataMember]
public string lastName;
[DataMember(EmitDefaultValue = true)]
public int age = 0;
[DataMember(EmitDefaultvValue = true)]
public int ID = 999999999;
B.
[DataMember(EmitDefaultValue = false)]
public string firstName = null;
[DataMember(EmitDefaultValue = false)]
public string lastName = null;
[DataMember(EmitDefaultValue = true)]
public int age = -1;
[DataMember(EmitDefaultValue = false)]
public int ID = 999999999;
C.
[DataMember(EmitDefaultValue = true)]
public string firstName;
[DataMember(EmitDefaultValue = true)]
public string lastName;
[DataMember(EmitDefaultValue = false)]
public int age = -1;
[DataMember(EmitDefaultValue = false)]
public int ID = 999999999;
D.
[DataMember]
public string firstName = null;
[DataMember]
public string lastName = null;
[DataMember(EmitDefaultValue = false)]
public int age = 0;
[DataMember(EmitDefaultValue = false)]
public int ID = 999999999;
Explanation:
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).EmitDefaultValue Attribute
(http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute.emitdefaultvalue.aspx)Data Member Default Values
(http://msdn.microsoft.com/en-us/library/aa347792.aspx)
D