Exemple #1
0
        /// <summary>
        /// Override the method to implement custom
        /// field level validation.
        /// By default FluentValidation is applied
        /// </summary>
        /// <param name="entity"></param>
        /// <returns>
        /// True is object is valid. False if not. In addition validator
        /// should populate collection of ValidationMessages
        /// </returns>
        protected virtual bool FieldValidation(T entity)
        {
            var attrs = this.GetType().GetCustomAttributes(typeof(ValidatorAttribute), true);

            foreach (var attr in attrs)
            {
                var valattr = attr as ValidatorAttribute;
                if (valattr != null)
                {
                    var validator = Activator.CreateInstance(valattr.ValidatorType) as IValidator;
                    if (validator != null)
                    {
                        var validationResult = validator.Validate(entity);
                        var errors           = validationResult.Errors;
                        foreach (var validationFailure in errors)
                        {
                            entity.ValidationMessages.Add(ValidationMessage.Create(validationFailure));
                        }
                    }
                }
            }

            return(entity.ValidationMessages.Count == 0);
        }