Ho molte (al momento circa 30) diverse classi di messaggi in un'applicazione che sto creando. Ognuno di questi messaggi deve essere serializzato e deserializzato. Tuttavia, il processo di serializzazione e deserializzazione è per lo più unico per ogni classe (il formato del messaggio serializzato è specificato in un documento e dice quali bit nel messaggio vanno dove), ma alcuni sono piuttosto semplici e usano lo stesso processo.
Ho pensato di far implementare ciascuna un'interfaccia, con i metodi Serialize()
e Deserialize()
. Tuttavia, sembra complicato implementare questo per ogni messaggio, specialmente quando molti dei messaggi usano di fatto lo stesso codice per fare questo serializzazione e deserializzazione.
Ho pensato di avere una classe che contiene Dictionary<T, Func<IMessage, byte[]>
e una funzione per mappare una funzione per serializzare su un tipo specifico. Quindi utilizzare questo dizionario per ottenere il serializzatore appropriato.
Qualche idea? Come andresti su questo problema?