Trovo spesso il seguente dilemma. Supponiamo che tu stia recuperando i messaggi Json da un database, da un bus dei messaggi, da un archivio di eventi o altro, e devi deserializzare ciascun messaggio nel tipo corretto.
Qualcosa come var deserializedObject = Json.Deserialize<?>(jsonMessage);
Qual è la migliore strategia / design per farlo?
Suppongo che Json debba contenere qualche tipo di metadata di tipo che aiuti il deserializzatore a sapere in quale oggetto lo deserializzi. È giusto? C'è qualche buon articolo su questo?
Se questo è l'approccio giusto, il Json avrebbe qualcosa come '$type': 'MyClass'
Ci sarebbe un'alternativa? Forse qualche funzionalità che afferra il Json e lo deserializza in un oggetto dinamico e successivamente inizia a scorrere i tipi "conosciuti" cercando di trovare una corrispondenza tra la struttura Json e un tipo noto?
Ancora una volta, qualsiasi buon articolo su questo o sull'esempio, meglio se con c #, sarebbe molto apprezzato.
Aggiornamento: alcune cose interessanti che ho trovato nel caso qualcuno ne sapesse qualcosa. MongoDb è in grado di memorizzare oggetti con proprietà astratte o di interfaccia e in seguito sa come deserializzarli perché memorizza un discriminatore di tipo con il documento di Bson. Ecco perché ho pensato che forse sono necessari sempre alcuni metadati insieme a un elenco di tipi noti.