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
?