Podczas deserializacji WCF zachodzi pewna magia. W jaki sposób tworzy wystąpienie typu kontraktu danych bez wywoływania jego konstruktora?
Rozważmy na przykład ten kontrakt danych:
[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
}
Po uzyskaniu instancji tego obiektu za pośrednictwem DataContractSerializer
zobaczysz, że to pole _wasConstructorCalled
jest false
.
Jak więc to robi WCF? Czy jest to technika, której mogą używać inni, czy też jest ona przed nami ukryta?