Which code segment should you use?

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 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)



Leave a Reply 1

Your email address will not be published. Required fields are marked *