c# - IEditableObject 和 IRevertibleChangeTracking 有什么区别?

标签 c# .net vb.net system.componentmodel componentmodel

IEditableObject 之间有什么区别?和 IRevertibleChangeTracking (都来自 System.ComponentModel 命名空间)?看起来第一个支持显式事务,而第二个更隐式——但最终结果是一样的。我应该如何在代码中实现它?目前我在 BeginEdit 什么都不做并调用RejectChangesAcceptChangesEndEditCancelEdit分别。我的问题是这也将接受在 BeginEdit 之前所做的更改。

这真的是 Microsoft 想要的,还是我试图实现两个互斥的接口(interface)?

最佳答案

这两个接口(interface)并不互斥。它们只是为了支持不同但有些相关的场景,这些场景也可以由相同的给定类来实现。这是一个简单的解释:

IEditableObject 接口(interface)

IEditableObject接口(interface)旨在支持对象需要在编辑时以某种特定方式管理其内部状态的场景。

因此,该接口(interface)包含明确标记编辑阶段何时开始、完成或中止的方法,以便可以采取适当的操作来修改这些阶段的对象状态。


IRevertibleChangeTracking 接口(interface)

IRevertibleChangeTracking接口(interface)旨在支持对象需要能够回滚到其先前状态的场景。

该接口(interface)具有标记对象的当前状态何时应永久化或应恢复到最后已知的永久状态的方法。

关于c# - IEditableObject 和 IRevertibleChangeTracking 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966959/

相关文章:

c# - 如何反序列化具有对某些容器类型的只读反向引用的类型的实例也被反序列化?

c# - 从datagridview点击显示图像

c# - 应用程序仅在触发断点时挂起,.NET、C#、Visual Studio

.net - 有没有办法将 .Net ILookup<TKey, TElement> 展平为 List<TElement>?

vb.net - 无法使用 SSH.NET 连接到 SSH 服务器

.net - Winforms 中的 VB.Net UserControl 关闭事件

c# - 文件 io 和伪终端的 p/invoke 声明

c# - ASP.NET MVC Html Helper 用法

.net - 如何在搜索引擎中索引您的 Silverlight 应用程序?

sql - 关于 SQL 语句的语法,我错过了什么?