none
c# generic type RRS feed

  • Discussione generale

  • Ciao a tutti, volevo sapere se si può fare un generictype di un generic type tipo:

    public class GenericService<T, I> : IGenericService<T> 
            where T : new()  
            where I : IGenericRepository<>

    Grazie :-D

    Se questo post risponde alla tua domanda ricorda di contrassegnarlo come risposta. In questo modo aiuterai altri utenti che hanno lo stesso problema a trovare la risposta più velocemente. Grazie.

    • Tipo modificato Irina Turcu giovedì 18 luglio 2013 13:36 In attesa di maggiori dettagli dall'OP.
    giovedì 4 luglio 2013 15:38

Tutte le risposte

  • IGenericRepository, essendo generico, deve avere un tipo specificato, che deve essere uno dei tipi con cui hai definito GenericService (ovvero, nel tuo caso, T oppure I).


    Marco Minerva [MCPD]
    Blog: http://marcominerva.wordpress.com
    Twitter: @marcominerva

    venerdì 5 luglio 2013 08:06
    Moderatore
  • Ciao,

    Marco ha perfettamente ragione. Aggiungerei, però, che la è condizione where a limitarti. Se non la specifichi, o se imponi un'interfaccia più astratta di IGenericRepository<>, il tipo I può essere di qualsiasi tipo. Dipende ovviamente da cosa cerchi di implementare. 

    venerdì 5 luglio 2013 11:23
  • Vi spiego allora il mio problema, ho il DAL, i DTO, il Repository e il Service. Il repository si occupa di fare le query con il DAL, mentre il service si occupa di convertire il DAL in DTO e viceversa.

    In ottica di DI, per il repository sono apposto, mi manca il service.

    Quello che volevo fare era, dai miei controller (sono in asp.net mvc) poter creare un service generico specificando sia il DTO che il repository necessario per comunicare con il DAL.

    Quindi, nel costruttore, poter specificare una cosa del tipo:

    IGenericService<UtenteViewModel, IGenericRepository<Utente>> servizio


    Se questo post risponde alla tua domanda ricorda di contrassegnarlo come risposta. In questo modo aiuterai altri utenti che hanno lo stesso problema a trovare la risposta più velocemente. Grazie.

    lunedì 8 luglio 2013 06:26
  • Quello che vuoi fare è perfettamente lecito, è consentito creare tipi generici il cui argomento sia a sua volta un tipo generico.

    Che problema hai nell'utilizzare questa sintassi?


    Marco Minerva [MCPD]
    Blog: http://marcominerva.wordpress.com
    Twitter: @marcominerva

    mercoledì 10 luglio 2013 08:20
    Moderatore
  • Come fai a creare il generico?

    IGenericService<T, IGenericRepository<U>>


    Se questo post risponde alla tua domanda ricorda di contrassegnarlo come risposta. In questo modo aiuterai altri utenti che hanno lo stesso problema a trovare la risposta più velocemente. Grazie.

    lunedì 15 luglio 2013 13:13
  • Perdonami, ma non è chiaro quale è il tuo problema. Che codice hai provato a scrivere e quale errore ottieni?

    Marco Minerva [MCPD]
    Blog: http://marcominerva.wordpress.com
    Twitter: @marcominerva

    lunedì 15 luglio 2013 22:22
    Moderatore