0

IEditableObjectを実装するAddressクラスがある場合、次のようなEndEdit実装がある可能性があります。

public void EndEdit()
{
    // BeginEdit would have set _editInProgress and save to *Editing fields
    if (_editInProgress)
    {
        _line1 = _line1Editing;
        _line2 = _line2Editing;
        _city = _cityEditing;
        _state = _stateEditing;
        _postalCode = _postalCodeEditing;
        _editInProgress = false;
    }
}

_cityに例外がある場合は、_line1_line2、および場合によっては_cityを元に戻す必要があります。この問題はEndEditに限定されるものではなく、おそらく他の場所でも見られます。

4

1 に答える 1

1

System.TransactionsのTransactionScopeの使用を検討しましたか?これにより、コードブロックがトランザクションになり、例外がスローされた場合に変更が自動的にロールバックされます。

CommittableTransactionを使用すると、コミットとロールバックをより細かく制御できるため、それを検討することをお勧めします。

于 2008-11-07T04:32:32.667 に答える