public virtual void Validate()
 {
     Requires()
     .IsNotNullOrEmpty(CompanyName, "CompanyName", "A razão social deve ser informada")
     .IsGreaterThan(CompanyName, 3, "CompanyName", "A razão social deve ter mais que 3 digitos")
     .IsLowerOrEqualsThan(CompanyName, 45, "CompanyName", "A razão social deve ter no máximo 45 digitos")
     .IsNotNullOrEmpty(FantasyName, "FantasyName", "O nome fantasia não pode ser nulo")
     .IsGreaterThan(FantasyName, 3, "FantasyName", "O nome fantasia deve ter mais que 3 digitos")
     .IsLowerOrEqualsThan(FantasyName, 45, "FantasyName", "O nome fantasia deve ter no máximo 45 digitos")
     .IsTrue(ValidateCNPJ.Validate(CNPJ), "CNPJ", "CNPJ inválido");
 }
        public CatererValidation()
        {
            RuleFor(c => c.Name)
            .NotEmpty().WithMessage("Field {propertyName} required")
            .Length(2, 100);

            When(c => c.CatererType == CatererType.Person, () => {
                RuleFor(c => c.Document.Length).Equal(ValidateCPF.cpfSize)
                .WithMessage("The field must be {ComparisonValue} characters and has {PropertyValue}");

                RuleFor(c => ValidateCPF.Validate(c.Document)).Equal(true)
                .WithMessage("Invalid CPF");
            });

            When(c => c.CatererType == CatererType.Company, () => {
                RuleFor(c => c.Document.Length).Equal(ValidateCNPJ.cnpjSize)
                .WithMessage("The field must be {ComparisonValue} characters and has {PropertyValue}");

                RuleFor(c => ValidateCNPJ.Validate(c.Document)).Equal(true)
                .WithMessage("Invalid CNPJ");
            });
        }