title: DataContract, default DataMember value
body: <p>Is there a way to choose default values of attributes that are not in the xml file during deserialization?<br>
  If the <code>mAge</code> attribute is not present in the xml file, I want to use a default value of 18.  Is it possible ?</p>
  
  <pre><code>[DataContract]
  public class Person 
  {
      public Person ()
      {
      }
      [DataMember(Name = "Name")]
      public string mName { get; set; }
      [DataMember(Name = "Age")]
      public int mAge { get; set; }
      [DataMember(Name = "Single")]
      public bool mIsSingle { get; set; }
  };
  </code></pre>
  
  <p>Edit to put the answer.</p>
  
  <pre><code>[DataContract]
  public class Person 
  {
      public Person ()
      {
      }
      [DataMember(Name = "Name")]
      public string mName { get; set; }
      [DataMember(Name = "Age")]
      public int? mAge { get; set; }
      [DataMember(Name = "Single")]
      public bool? mIsSingle { get; set; }
  
      [System.Runtime.Serialization.OnDeserialized]
      void OnDeserialized(System.Runtime.Serialization.StreamingContext c)
      {
          mAge = (mAge == null ? 18 : mAge); // 18 is the default value
      }
  }
  </code></pre>