Je viens de réaliser quelque chose de fou, que je suppose être tout à fait impossible : lors de la désérialisation d'un objet, le DataContractSerializer n'appelle pas le constructeur !
Prendre cette classe, par exemple :
[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; }
}
Quand je désérialiser un objet de cette classe, le point d'arrêt n'est pas atteint. Je n'ai absolument aucune idée de comment il est possible, puisque c'est le seul constructeur pour cet objet !
Je suppose que peut-être un supplément de constructeur a été généré par le compilateur en raison de l' DataContract
d'attribut, mais je ne pouvais pas le trouver, grâce à la réflexion...
Donc, ce que j'aimerais savoir, c'est ceci : comment pourrait-d'une instance de ma classe est créé sans le constructeur appelée ??
NOTE: je sais que je peux utiliser l' OnDeserializing
d'attribut pour initialiser mon objet lors de la désérialisation commence, ce n'est pas l'objet de ma question.