CSLA .NET 的 N 级撤销功能详解
1. 撤销功能概述
在某些应用场景中,应用程序需要具备撤销对对象所做更改的能力。例如,数据绑定要求对象实现 IEditableObject 接口,这就需要对象能够对其状态进行快照、编辑,然后在需要时将状态恢复到快照时的状态。另外,当 UI 中有不关闭表单或页面的取消按钮时,用户期望点击该按钮能将表单数据(以及业务对象)恢复到之前的状态。
实现撤销功能具有挑战性,特别是考虑到父子对象关系时。例如,撤销对发票对象的更改时,不仅要撤销发票对象本身的更改,还需要移除所有新添加的行项目、重新添加所有已移除的行项目,并撤销所有已编辑的行项目。
CSLA .NET 提供的是 N 级撤销功能,这意味着可以让对象对其状态进行多次快照,然后取消或接受每一级的更改。示例代码如下:
_customer.BeginEdit() ' 进行快照
_customer.Name = "ABC Corp"
_customer.BeginEdit() ' 进行快照
_customer.Name = "RDL Corp"
_customer.BeginEdit() ' 进行快照
_customer.Name = "XYZ Corp"
_customer.CancelEdit() ' 撤销到上一个快照
_customer.CancelEdit() ' 撤销到第二个快照
_customer.ApplyEdit() ' 保留第一组属性更改
最终, Name 属性的值为 “ABC Corp”,因为后两组属性更改通过
CSLA.NET N级撤销功能解析
超级会员免费看
订阅专栏 解锁全文
57

被折叠的 条评论
为什么被折叠?



