title: How do I make IEditableObject.EndEdit atomic?
body: <p>If I have an Address object which implements IEditableObject, I might have EndEdit implementation like this:</p>
  
  <pre><code>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;
      }
  }
  </code></pre>
  
  <p>If there is an exception updating <strong><em>_state</em></strong>, for example, then all 5 properties should reset.  This atomic update issue probably isn't limited to EndEdit.</p>