DataContractSerializer não chama meu construtor?

Acabei de perceber algo louco, que eu assumi ser completamente impossível: ao desserializar um objeto, oDataContractSerializer não chama o construtor !

Tome esta classe, por exemplo:

[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; }
}

Quando eu desserializo um objeto dessa classe, o ponto de interrupção não é atingido. Eu não tenho absolutamente nenhuma idéia de como isso é possível, já que é o único construtor para este objeto!

Eu assumi que talvez um construtor adicional foi gerado pelo compilador por causa doDataContract atributo, mas não consegui encontrá-lo através da reflexão ...

Então, o que eu gostaria de saber é o seguinte: como uma instância da minha classe pode ser criada sem que o construtor seja chamado ??

NOTA: Eu sei que posso usar oOnDeserializing atributo para inicializar meu objeto quando a desserialização começa, este não é o assunto da minha pergunta.

questionAnswers(2)

yourAnswerToTheQuestion