Sto risolvendo questo problema in questo modo: iniettando fabbriche di dipendenze. In quelle fabbriche, risolvere prima la dipendenza mentre è registrata nel contenitore, quindi "deserializzare" tutti i dati rimanenti: json.net consente di popolare i campi nell'oggetto esistente.
Dato che il codice delle fabbriche segue il codice di cablaggio del contenitore IoC, non penso che l'utilizzo di container.Resolve
all'interno della fabbrica violi la regola, che container
debba essere utilizzato solo in un punto nel codice: dove avviene il cablaggio.
A partire da ora, sto cercando di rendere automatico questo processo (al contrario di quello che ho provato con questo approccio) usando la riflessione. Sì, non c'è molto di ciò che rimane della deserializzazione di json.net stessa, una parte di essa è sostituita da un codice personalizzato, ma penso, perché preoccuparsi.
Inoltre, qual è stata la tua ultima riflessione / decisione in merito? Dopo aver letto questo post vedo due modi: deserializzare, quindi iniettare; o iniettare, quindi deserializzare (popolare). E continuo a trovare che la mia strada è migliore. Sarò lieto di ascoltare argomenti in opposizione a questo (sto pensando, che il mio modo potrebbe essere migliore per il mio caso, ma non riesco a immaginare vividamente buoni casi alternativi, dove fallisce, solo alcune supposizioni minori)