public void Execute(C context) { if (Begin != null) { Begin.Execute(context); } try { UnderlyingOperation.Execute(context); if (Commit != null) { Commit.Execute(context); } } catch (Exception ex) { if (Abort != null) { Abort.Execute(context); } throw new Exception(ex.Message, ex); } }