ope*_*lar 24 .net c# vb.net system.componentmodel componentmodel
IEditableObject和IRevertibleChangeTracking(来自System.ComponentModel命名空间)有什么区别?看起来好像第一个支持显式事务而第二个支持更隐式 - 但最终结果是相同的.我应该如何在代码中实现它?目前我在BeginEdit中什么都不做,并分别在EndEdit和CancelEdit中调用RejectChanges和AcceptChanges.我的问题是,这也将接受在BeginEdit之前所做的更改.
这真的是微软想要的,还是我试图实现两个互斥的接口?
Enr*_*lio 26
这两个接口不是互斥的.它们只是用于支持不同但有些相关的场景,这些场景也可能由同一个给定的类实现.这是一个快速解释:
该IEditableObject接口被设计为支持其中一个对象需要的情况下以某种特定的方式管理其内部状态,同时正在编辑它.
因此,该接口包括明确标记编辑阶段何时开始,完成或中止的方法,以便可以采取适当的操作来修改这些阶段的对象状态.
该IRevertibleChangeTracking接口被设计为支持其中一个对象需要能够场景回滚到以前的状态.
该接口具有一些方法,用于标记何时应将对象的当前状态设为永久状态,或者应将其恢复为上一个已知的永久状态.