public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { CompositeActivity compositeActivity = obj as CompositeActivity; if (compositeActivity == null) { throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(CompositeActivity).FullName), "obj"); } if (Helpers.IsActivityLocked(compositeActivity)) { return(new ValidationErrorCollection()); } ValidationErrorCollection validationErrors = base.Validate(manager, obj); // check if more than one cancellation handler or compensation or fault handlers are specified int cancelHandlerCount = 0; int exceptionHandlersCount = 0; int compensationHandlerCount = 0; foreach (Activity activity in ((ISupportAlternateFlow)compositeActivity).AlternateFlowActivities) { cancelHandlerCount += (activity is CancellationHandlerActivity) ? 1 : 0; exceptionHandlersCount += (activity is FaultHandlersActivity) ? 1 : 0; compensationHandlerCount += (activity is CompensationHandlerActivity) ? 1 : 0; } // check cancellation handlers if (cancelHandlerCount > 1) { validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCancelHandler, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneEventHandlersDecl)); } // check exception handlers if (exceptionHandlersCount > 1) { validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneFaultHandlersActivityDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneFaultHandlersActivityDecl)); } // check compensation handlers if (compensationHandlerCount > 1) { validationErrors.Add(new ValidationError(SR.GetString(SR.Error_MoreThanOneCompensationDecl, compositeActivity.GetType().Name), ErrorNumbers.Error_ScopeMoreThanOneCompensationDecl)); } if (manager.ValidateChildActivities) { foreach (Activity childActivity in Helpers.GetAllEnabledActivities(compositeActivity)) { validationErrors.AddRange(ValidationHelpers.ValidateActivity(manager, childActivity)); } } return(validationErrors); }
public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { CompositeActivity activity = obj as CompositeActivity; if (activity == null) { throw new ArgumentException(SR.GetString("Error_UnexpectedArgumentType", new object[] { typeof(CompositeActivity).FullName }), "obj"); } if (Helpers.IsActivityLocked(activity)) { return(new ValidationErrorCollection()); } ValidationErrorCollection errors = base.Validate(manager, obj); int num = 0; int num2 = 0; int num3 = 0; foreach (Activity activity2 in ((ISupportAlternateFlow)activity).AlternateFlowActivities) { num += (activity2 is CancellationHandlerActivity) ? 1 : 0; num2 += (activity2 is FaultHandlersActivity) ? 1 : 0; num3 += (activity2 is CompensationHandlerActivity) ? 1 : 0; } if (num > 1) { errors.Add(new ValidationError(SR.GetString("Error_MoreThanOneCancelHandler", new object[] { activity.GetType().Name }), 0x527)); } if (num2 > 1) { errors.Add(new ValidationError(SR.GetString("Error_MoreThanOneFaultHandlersActivityDecl", new object[] { activity.GetType().Name }), 0x52a)); } if (num3 > 1) { errors.Add(new ValidationError(SR.GetString("Error_MoreThanOneCompensationDecl", new object[] { activity.GetType().Name }), 0x52b)); } if (manager.ValidateChildActivities) { foreach (Activity activity3 in Helpers.GetAllEnabledActivities(activity)) { errors.AddRange(ValidationHelpers.ValidateActivity(manager, activity3)); } } return(errors); }