Quando si lavora con un'applicazione multilivello molto spesso si esegue un'attività di conversione di oggetti in un livello in oggetti in un altro livello. Ciò potrebbe essere la conversione di oggetti di database in oggetti di dominio, oggetti di servizio in oggetti di dominio, oggetti di dominio in modelli di visualizzazione, ecc.
Ho visto che viene eseguito in diversi modi, tra cui:
- Conversione in linea
- Creazione di una classe di traduttore con metodi di supporto statici
- Uso dei metodi di estensione per semplificare la conversione
- Sostituzione degli operatori di cast
- Creazione di classi di mapper separe per ogni possibile traduzione
- Utilizzo di soluzioni come automapper
Quale sarebbe il modo "corretto" per gestirlo. L'applicazione con cui lavoro attualmente utilizza una classe di mapper separata per ogni possibile traduzione e, sebbene abbia i vantaggi della testabilità, stiamo utilizzando l'iniezione di dipendenza e dobbiamo passare tutti quei mappatori come dipendenze nel costruttore.
Qualcuno ha trovato un modo migliore per farlo?
Aggiorna
Sto usando lo stack .NET qui (EF + Business Layer + MVC)