如果我有一个实现 IEditableObject 的 Address 对象,我可能会有这样的 EndEdit 实现:
public void EndEdit()
{
// BeginEdit would set _editInProgress and update *Editing fields;
if (_editInProgress)
{
_line1 = _line1Editing;
_line2 = _line2Editing;
_city = _cityEditing;
_state = _stateEditing;
_postalCode = _postalCodeEditing;
_editInProgress = false;
}
}
例如,如果更新_state时出现异常,则应重置所有 5 个属性。这个原子更新问题可能不仅限于 EndEdit。