andrebaltieri / FluentValidator

Fluent Validator is a fluent way to use Notification Pattern with your entities
122 stars 40 forks source link

Erro de NullReferenceException com HasMaxLen #33

Open luisrjbr opened 6 years ago

luisrjbr commented 6 years ago

Boa tarde! Quando utilizo o HasMaxLen e a propriedade está nula ocorre o erro: System.NullReferenceException: 'Object reference not set to an instance of an object.':

    protected override IEnumerable<Notification> Validations()
    {
        return new ValidationContract()
             .Requires()
             .IsNotNullOrEmpty(Name, "Name", "Nome não deve ser nulo")
             .HasMaxLen(Name, 100, "Name", "Máximo de 100")
             .Notifications;
    }

Para que o erro não ocorra devo testar se é nula a string: protected override IEnumerable Validations() { return new ValidationContract() .Requires() .IsNotNullOrEmpty(Name, "Name", "Nome não deve ser nulo") .HasMaxLen(Name == null ? "" : this.Name, 100, "Name", "Máximo de 100")
.Notifications; }

Está correta a forma de implementar? Obrigado

edvaldofarias commented 5 years ago

Qual é sua versão o FluentValidator?

A ultima versão já existe um tratamento para os HasMaxLen, para esse tipo de situação.

Mas caso não possa atualizar a versão do seu FluentValidator ou continue dando o erro, você pode usar essa abordagem para corrigir o problema:

.HasMaxLen((Name ?? ""), 100, "Name", "Mensagem")

andreyhideki commented 5 years ago

Estava com esse mesmo problema na 1.0.2 atualizei para a 1.0.3 e está resolvido.

https://www.nuget.org/packages/Flunt/

Boa tarde! Quando utilizo o HasMaxLen e a propriedade está nula ocorre o erro: System.NullReferenceException: 'Object reference not set to an instance of an object.':

    protected override IEnumerable<Notification> Validations()
    {
        return new ValidationContract()
             .Requires()
             .IsNotNullOrEmpty(Name, "Name", "Nome não deve ser nulo")
             .HasMaxLen(Name, 100, "Name", "Máximo de 100")
             .Notifications;
    }

Para que o erro não ocorra devo testar se é nula a string: protected override IEnumerable Validations() { return new ValidationContract() .Requires() .IsNotNullOrEmpty(Name, "Name", "Nome não deve ser nulo") .HasMaxLen(Name == null ? "" : this.Name, 100, "Name", "Máximo de 100") .Notifications; }

Está correta a forma de implementar? Obrigado

Estava com esse mesmo problema na 1.0.2 atualizei para a 1.0.3 e está resolvido.

https://www.nuget.org/packages/Flunt/