Frage

Was ist der Unterschied zwischen IEdableObject und Irevertiblechangetracking (beide aus dem system.comPonentModel -Namespace)? Es sieht so aus, als ob die erste explizite Transaktion unterstützt, während die zweite impliziter ist - aber das Nettoergebnis ist das gleiche. Wie soll ich dies in Code implementieren? Im Moment mache ich nichts in Begonnen und Ruf an Rejectchanges und AcceptChanges in Beendet und Storniert beziehungsweise. Mein Problem ist, dass dies auch die Änderungen akzeptiert, die vor dem Beginnedit vorgenommen wurden.

Ist das wirklich das, was Microsoft wollte oder versuche ich, zwei gegenseitig exklusive Schnittstellen zu implementieren?

War es hilfreich?

Lösung

Die beiden Schnittstellen schließen sich nicht gegenseitig aus. Sie sind Einfach beabsichtigt, verschiedene und doch etwas verwandte Szenarien zu unterstützen, was genauso gut von derselben gegebenen Klasse implementiert werden kann. Hier ist eine kurze Erklärung:

IEDEBLEOBJECT -Schnittstelle

Das IEdableObject Die Schnittstelle wird entwickelt, um das Szenario zu unterstützen, in dem ein Objekt muss Verwalten Sie seinen internen Zustand auf besondere Weise, während er bearbeitet wird.

Aus diesem Grund enthält die Schnittstelle Methoden, die explizit markieren, wenn die Bearbeitungsphase gestartet, abgeschlossen oder abgebrochen wird, damit die entsprechenden Maßnahmen ergriffen werden können, um den Zustand des Objekts in diesen Phasen zu ändern.


IrevertiblechangAntracking -Schnittstelle

Das Irevertiblechangetracking Die Schnittstelle soll das Szenario unterstützen, in dem ein Objekt in der Lage sein muss Rollback in seinen vorherigen Zustand.

Die Schnittstelle verfügt über Methoden, die markieren, wenn der aktuelle Zustand des Objekts dauerhaft gemacht werden sollte, oder sie sollte in den letzten bekannten dauerhaften Zustand zurückgekehrt werden.

Andere Tipps

IEdableObject wird für kurzfristige Revertanble -Modifikationen wie Dialogfelder verwendet.

Irevertiblechangetracking wird für langfristige, revertierbare Änderungen wie das Bearbeiten eines Datensatzes und die Verfolgung, ob der Datensatz gespeichert werden muss oder nicht.

Ich implementiere oft beide Schnittstellen, so dass ich die Fähigkeit habe, zwei Ebenen von Rückgängni zu unterstützen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top