DataContractSerializer не вызывает мой конструктор?
Я только что осознал что-то сумасшедшее, что я предположил совершенно невозможным: при десериализации объектаDataContractSerializer doesn't call the constructor !
Возьмите этот класс, например:
[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; }
}
Когда я десериализую объект этого класса, точка останова не будет достигнута. Я понятия не имею, как это возможно, так как это единственный конструктор для этого объекта!
Я предположил, что, возможно, компилятор сгенерировал дополнительный конструктор из-заDataContract
атрибут, но я не смог найти его с помощью отражения ...
Итак, я хотел бы знать следующее: как создать экземпляр моего класса без вызова конструктора ??
NOTE: I know that I can use the OnDeserializing
attribute to initialize my object when deserialization begins, this is not the subject of my question.