Domanda nel titolo ... In breve - Ho un servizio WCF che espone le operazioni che restituiscono le classi di entità. Le classi lato client ereditano da una classe base astratta invece del System.Object predefinito. La classe base astratta ha definito un costruttore predefinito. Quando si chiama uno dei metodi di servizio, mi aspetto che venga richiamato il costruttore quando il serializzatore datacontract materializza gli oggetti restituiti. Tuttavia, il costruttore non viene chiamato. Se invece creo un'istanza della classe entità, viene chiamato il costruttore della classe astratta.Perché il costruttore della mia classe base astratta non viene chiamato quando un oggetto è inizializzato dal deserializzatore WCF?
Perché, oh perché, e c'è una soluzione? O mi sono perso qualcosa - c'è un'altra firma del costruttore che viene chiamata dal serializzatore datacontract quando materializza gli oggetti? In caso contrario, in che modo il serializzatore datacontract materializza gli oggetti senza chiamare i costruttori nello stesso modo in cui farebbe una chiamata "new SomeClass()"? Oppure bevevo troppo caffè oggi (avevo solo 2 o 3 tazze fino ad ora)?
Grazie per la risposta rapida. Wow. Questo mi sorprende. Ho pensato che l'inizializzazione di tutti gli oggetti avrebbe comportato la chiamata di costruttori. Oh bene, ho imparato qualcosa di nuovo oggi ... :) – KristoferA
È davvero piuttosto sorprendente. Ho dovuto scavare nel riflettore la prima volta che l'ho visto! –
Una domanda di follow-up [per curiosità] sarebbe: _ perché ... l'hanno fatto in quel modo? Prestazione? Pasticciare con le nostre teste? O qualche altra ragione migliore? :) – KristoferA