З десериалізацією WCF відбувається якась магія. Як він створює екземпляр екземпляра типу контракту даних, не викликаючи його конструктор?
Наприклад, розглянемо цей контракт даних:
[DataContract]
public sealed class CreateMe
{
[DataMember] private readonly string _name;
[DataMember] private readonly int _age;
private readonly bool _wasConstructorCalled;
public CreateMe()
{
_wasConstructorCalled = true;
}
// ... other members here
}
Отримавши екземпляр цього об'єкта через DataContractSerializer
ви побачите, що поле _wasConstructorCalled
є false
.
Отже, як WCF це робить? Це техніка, якою можуть скористатись і інші, чи вона прихована від нас?