/// <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); }