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.