Bei der Deserialisierung von WCF ist etwas Magisches im Gange. Wie instanziiert es eine Instanz des Datenvertragstyps, ohne seinen Konstruktor aufzurufen?
Betrachten Sie beispielsweise diesen Datenvertrag:
[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
}
Wenn Sie eine Instanz dieses Objekts über erhalten, sehen DataContractSerializer
Sie, dass das Feld _wasConstructorCalled
ist false
.
Wie macht WCF das? Ist dies eine Technik, die auch andere anwenden können, oder ist sie uns verborgen?