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 に限定されたものではありません。