Passare un tipo generico T recuperandolo da stringa

di il
1 risposte

Passare un tipo generico T recuperandolo da stringa

Gentili,

chiedo il vostro aiuto per un problema che non riesco a risolvere, dopo aver googlato parecchio.

In pratica utilizzo CsvHelper per leggere dei csv diversi ed ho creato una classe per ciascun formato, es. FormatoUno, FormatoDue, FormatoTre per mappare i vari formati, poi alla fine esporto in un json con Newtonsoft.

Per leggere un file faccio:

List<FormatoUno> row;
....
rows = csv.GetRecords<FormatoUno>().ToList();   // metodo di CsvHelper
.....    // faccio l'esportazione in json 

Quello che vorrei fare è riuscire ad automatizzare il tutto passando la classe generica T dinamicamente da stringa per evitare di dover ricodificare il codice ogni volta che aggiungo una nuova classe.

Non so se sono riuscito a spiegare abbastanza correttamente.

Grazie in anticipo per qualsiasi aiuto.

Luciano

1 Risposte

  • Re: Passare un tipo generico T recuperandolo da stringa

    09/09/2024 - luciusinfabula ha scritto:


    Quello che vorrei fare è riuscire ad automatizzare il tutto passando la classe generica T dinamicamente da stringa per evitare di dover ricodificare il codice ogni volta che aggiungo una nuova classe.

    Non so se sono riuscito a spiegare abbastanza correttamente.

    No, direi che la richiesta non è chiara.

    Il tipo “T” generico va sostituito per mappare i dati del CSV sui campi/proprietà di un oggetto che, ipoteticamente, avrà altri riferimenti all'interno del codice: se quel tipo fosse “configurabile da stringa”, vuol dire che il resto del codice non potrebbe fare riferimento al tipo per utilizzare nomi di campi e proprietà ed essere quindi valido e compilabile. Si potrebbe fare in un contesto dinamico, ma allora qual è l'utilità di usare un parser se i valori vengono messi in una struttura dinamica?

    Spiega meglio qual è la necessità che devi risolvere, così forse si può pensare a quale soluzione migliore adottare a prescindere dalla tua richiesta iniziale.

Devi accedere o registrarti per scrivere nel forum
1 risposte