title: DataContractSerializer doesn't call my constructor?
body: <p>I just realized something crazy, which I assumed to be completely impossible : when deserializing an object, the <strong>DataContractSerializer doesn't call the constructor</strong> !</p>
  
  <p>Take this class, for instance :</p>
  
  <pre><code>[DataContract]
  public class Book
  {
      public Book()
      { // breakpoint here
      }
  
      [DataMember(Order = 0)]
      public string Title { get; set; }
      [DataMember(Order = 1)]
      public string Author { get; set; }
      [DataMember(Order = 2)]
      public string Summary { get; set; }
  }
  </code></pre>
  
  <p>When I deserialize an object of that class, the breakpoint is not hit. I have absolutely no idea how it is possible, since it is the only constructor for this object !</p>
  
  <p>I assumed that perhaps an additional constructor was generated by the compiler because of the <code>DataContract</code> attribute, but I couldn't find it through reflection...</p>
  
  <p>So, what I'd like to know is this : how could an instance of my class be created without the constructor being called ??</p>
  
  <p><em>NOTE: I know that I can use the <code>OnDeserializing</code> attribute to initialize my object when deserialization begins, this is not the subject of my question.</em></p>