Il mio suggerimento è quello di determinare la specifica annulla requisiti e dei suoi benefici pratici prima di iniziare la progettazione e realizzazione. Ho ereditato un'app WinForms che utilizzava un annullamento sequenziale con più operazioni tramite una pila di oggetti generici di "azione" internamente. Tuttavia, è risultato che nessuno degli utenti dell'app con cui ho parlato né ha richiesto la funzione! E il modo in cui funziona questa particolare app, se fossi un utente dell'app, non mi vedrei nemmeno usare la funzione.
La funzionalità di annullamento avrebbe potuto essere più utile in questo caso se si trattasse di un annullamento "selettivo"; dove l'utente può selezionare qualsiasi singola operazione/modifica di diverse modifiche precedenti effettuate prima del commit dei dati e ripristinare quella singola modifica al suo stato originale, invece di essere solo in grado di annullare prima l'ultima operazione, seguita dalla penultima operazione ecc., ecco come è stato implementato.
In ogni caso, l'app in questo modo contiene la complessità e la reindirizzamento non necessarie, rendendo più difficile e lento "ingombrare" e apportare modifiche e miglioramenti alle funzionalità esistenti, in questo caso per un beneficio reale minimo o nullo. Da quando ho ereditato il progetto, ho implementato nuove funzionalità senza annullare e nessuno ha mai ricevuto lamentele.
Sono Ovviamente per alcuni dettagli qui si parla di dettagli, ma penso che tutti i pezzi importanti siano lì. :) –