Devo usare i farmaci generici quando possibile o in alcuni casi è ok?

1

Sto avendo un'interfaccia ProgressReporter che fondamentalmente prende un elenco di elementi di input (la coda di lavoro) attraverso un metodo SetWorkPackages(IEnumerable<T> workPackages) e poi ha un altro metodo FinishedWorkPackage(T workPackage) per indicare che un pacchetto è stato terminato.

Quindi gestirà questo nel modo corretto, cioè visualizzerà un nuovo numero percentuale, aggiornerà una barra di avanzamento sull'interfaccia utente, qualunque cosa sia implementata.

Usando i generici, devo chiamarlo così:

var cpr = new ConsoleProgressReporter<WorkPackage>();
cpr.SetWorkPackages(...);
cpr.FinishedWorkPackage(...);

In realtà, ho la sensazione che l'utente non si preoccupi del tipo T , perché non ottiene mai risultati attraverso l'API. Anche internamente nelle attuali implementazioni, non importa che tipo T sia.

Va bene in questi casi, per consentire solo object invece di usare i generici? Ci sono delle linee guida generali su quando usare i generici e quando usare object ?

    
posta Aufziehvogel 11.06.2015 - 08:41
fonte

1 risposta

2

Se non fa alcuna differenza su cosa sia il tipo di elemento, allora certo, potresti ignorare il fatto che sono T oggetti. Ma se non eseguirai alcuna operazione specifica T su di essi, perché archiviare gli oggetti? Forse starai meglio con solo un contatore che registra quanti ne sono.

L'unica situazione in cui posso acquisire immagini come Object s ha senso se si desidera richiamare i metodi Object -defined ma non T -defined, ad es. %codice%. Ma francamente, non ci sono molti metodi utili di toString() per cominciare.

    
risposta data 11.06.2015 - 08:44
fonte

Leggi altre domande sui tag