Qual è la differenza tra IEditableObject e IRevertibleChangeTracking?
-
24-10-2019 - |
Domanda
Qual è la differenza tra IEditableObject e IRevertibleChangeTracking (sia dal sistema .ComponentModel namespace)? Sembra come se il primi supporti transazione esplicita, mentre il secondo è più implicito - ma il risultato netto è lo stesso. Come devo fare per l'attuazione del presente nel codice? Al momento non faccio niente in BeginEdit e call RejectChanges e AcceptChanges in EndEdit e CancelEdit rispettivamente. Il mio problema è che questo sarà anche accettare le modifiche effettuate prima del BeginEdit.
E 'davvero questo che Microsoft ha voluto o sto cercando di implementare due interfacce si escludono a vicenda?
Soluzione
Le due interfacce non sono reciprocamente esclusivi. Sono semplicemente destinato a sostenere diversi scenari ancora in qualche modo correlati , che potrebbe anche essere attuato dalla stessa classe data. Ecco una rapida spiegazione:
IEditableObject Interfaccia
Il IEditableObject interfaccia è progettata sostenere lo scenario in cui un oggetto deve gestire il suo stato interno in qualche modo particolare durante la fase di modifica .
Per questo motivo l'interfaccia include metodi che segnano in modo esplicito quando si avvia la fase di modifica, a termine o interrotta, in modo che le azioni appropriate possono essere prese per modificare lo stato dell'oggetto nelle fasi.
IRevertibleChangeTracking interfaccia
Il IRevertibleChangeTracking interfaccia è progettata per sostenere lo scenario in cui un esigenze degli oggetti da essere in grado di rollback al suo stato precedente .
L'interfaccia ha metodi che marchio quando lo stato corrente dell'oggetto dovrebbe essere reso permanente o dovrebbe essere ripristinato l'ultimo stato permanente noto.
Altri suggerimenti
IEditableObject è usato per il breve termine, le modifiche revertanble quali finestre di dialogo.
IRevertibleChangeTracking è utilizzato per lungo periodo, i cambiamenti reversibili, come ad esempio la modifica di un record e il monitoraggio o meno le esigenze discografiche per essere salvati.
Mi capita spesso di implementare entrambe le interfacce in modo da avere la capacità di supportare due livelli di undo.