14、CSLA .NET 的 N 级撤销功能详解

CSLA.NET N级撤销功能解析

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”,因为后两组属性更改通过

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值