Catel.Windows.Controls.WarningAndErrorValidator.CheckObjectValidation C# (CSharp) Метод

CheckObjectValidation() приватный Метод

Checks a entity that either implements the IDataWarningInfo or IDataErrorInfo on warnings and errors.
Internally calls the generic method with the same name.
private CheckObjectValidation ( object value, string propertyChanged, IEnumerable parentEnumerable ) : void
value object The object to check.
propertyChanged string The propery that has been changed. null if no specific property has changed.
parentEnumerable IEnumerable The parent enumerable. Null if the object does not belong to an enumerable.
Результат void
        private void CheckObjectValidation(object value, string propertyChanged, IEnumerable parentEnumerable)
        {
            ValidationData currentValidationData;
            ValidationData oldValidationData;

            if (value == null)
            {
                return;
            }

            lock (_objectValidationLock)
            {
                if (!_objectValidation.ContainsKey(value))
                {
                    _objectValidation[value] = new ValidationData(parentEnumerable);
                }

                currentValidationData = _objectValidation[value];

                oldValidationData = (ValidationData)currentValidationData.Clone();
            }

            var model = value as IModel;

            CheckObjectValidationForFields(value, propertyChanged, currentValidationData.FieldWarnings, ValidationType.Warning);

            #region Warnings - business
            currentValidationData.BusinessWarnings.Clear();

            if (model != null)
            {
                if (!model.IsHidingValidationResults)
                {
                    foreach (var warning in model.ValidationContext.GetBusinessRuleWarnings())
                    {
                        currentValidationData.BusinessWarnings.Add(new BusinessWarningOrErrorInfo(warning.Message));
                    }
                }
            }
            else
            {
                string businessWarning = GetWarningOrError(value, ValidationType.Warning);
                if (!string.IsNullOrEmpty(businessWarning))
                {
                    currentValidationData.BusinessWarnings.Add(new BusinessWarningOrErrorInfo(businessWarning));
                }
            }
            #endregion

            CheckObjectValidationForFields(value, propertyChanged, currentValidationData.FieldErrors, ValidationType.Error);

            #region Errors - business
            currentValidationData.BusinessErrors.Clear();

            if (model != null)
            {
                if (!model.IsHidingValidationResults)
                {
                    foreach (var error in model.ValidationContext.GetBusinessRuleErrors())
                    {
                        currentValidationData.BusinessErrors.Add(new BusinessWarningOrErrorInfo(error.Message));
                    }
                }
            }
            else
            {
                string businessError = GetWarningOrError(value, ValidationType.Error);
                if (!string.IsNullOrEmpty(businessError))
                {
                    currentValidationData.BusinessErrors.Add(new BusinessWarningOrErrorInfo(businessError));
                }
            }
            #endregion

            RaiseEventsForDifferences(value, oldValidationData, currentValidationData);
        }