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.

Ответы на вопрос(2)

Ваш ответ на вопрос