public static IRuleBuilderOptions <T, TProperty> UseNestedValidator <T, TProperty>(
            this IRuleBuilder <T, TProperty> ruleBuilder)
        {
#pragma warning disable 612, 618
            return(ruleBuilder.SetValidator((IValidator <TProperty>)ValidationEngine.GetValidator <TProperty>()));

#pragma warning restore 612, 618
        }
        public static FluentValidation.Results.ValidationResult Validate(this IValidatable obj, object additonalContext)
        {
            var validationResult = ValidationEngine.Validate(obj.GetType(), obj, additonalContext);

            if (validationResult == null || validationResult.Errors == null)
            {
                return(new FluentValidation.Results.ValidationResult());
            }

            return(validationResult);
        }
        public FluentValidation.Results.ValidationResult Validate()
        {
            var validationResult = ValidationEngine.Validate(GetType(), this);

            if (validationResult == null || validationResult.Errors == null)
            {
                return(new FluentValidation.Results.ValidationResult());
            }

            return(validationResult);
        }