private void AddOrDeleteChanging(ComposablePartCatalogChangeEventArgs changeArgs, Action addDeleteAction, bool added) { bool changeException = false; ChangeRejectedException changeRejectedException = null; string failureDetails = null; bool recompositionSuccess = false; RecompositionEventReason recompositionEventReason = RecompositionEventReason.Deleted; try { Changing?.Invoke(this, changeArgs); } catch (ChangeRejectedException exc) { failureDetails = GetChangeRejectedExceptionMessage(exc); changeException = true; } addDeleteAction(); Changed?.Invoke(this, changeArgs); if (!changeException) { recompositionSuccess = true; } else { RecompositionException(changeRejectedException); } if (added) { recompositionEventReason = RecompositionEventReason.Added; } RecompositionAttemptEvent?.Invoke(this, new RecompositionAttemptEventArgs(recompositionSuccess, recompositionEventReason, failureDetails)); }
internal RecompositionAttemptEventArgs(bool success, RecompositionEventReason reason, string failureDetails) { Success = success; Reason = reason; FailureDetails = failureDetails; }