Novidades do .NET 8: melhorias na validação de intervalos ao utilizar RangeAttribute

Renato Groffe
3 min readOct 28, 2023

--

Este artigo traz mais uma das novidades envolvendo recursos para validações e que se encontram no namespace System.ComponentModel.DataAnnotations: as propriedades MinimumIsExclusive e MaximumIsExclusive no tipo RangeAttribute.

Nos links a seguir temos os artigos anteriores dentro deste conjunto de novidades:

Novidades do .NET 8: tamanhos mínimo e máximo de strings e coleções com LengthAttribute

Novidades do .NET 8: validando strings base64 com Base64StringAttribute

Novidades do .NET 8: definindo valores possíveis com AllowedValuesAttribute

Novidades do .NET 8: definindo valores não permitidos com DeniedValuesAttribute

Com MinimumIsExclusive ao associar o atribute Range a uma propriedade indicamos que o uso do limite mínimo para essa estrutura não é permitido. Já MaximumIsExclusive apresenta comportamento similar, desta vez considerando o limite superior do atributo Range.

Essas capacidades foram demonstradas com os tipos que estão na listagem seguinte:

  • A classe AnoEraComum representa a contagem de dados de nossa era atual. Como o primeiro ano foi 1 d.C., ao indicar zero como valor para minimum no atributo Range e com MinimumIsExclusive igual a true definimos que este valor é inválido para a propriedade Valor;
  • O tipo AnoAnteriorEraComum define como regra que o valor zero (indicado em maximum) não é válido para a propriedade Valor (graças a MaximumIsExclusive configurado como true). Essa estrutura representa a contagem de tempo anterior à era atual (encerrando-se em 1 a.C.).

Na próxima listagem foram associados valores válidos e inválidos para a propriedade Valor de AnoEraComum e AnoAnteriorEraComum, com as validações acontecendo a partir da classe Validator (namespace System.ComponentModel.DataAnnotations):

Ao executar esta Console Application por meio do Visual Studio 2022 teremos como o seguinte resultado (estão destacadas em vermelho as mensagens de erro para o campo Valor dos tipos AnoEraComum e AnoAnteriorEraComum, as quais poderiam ainda ser redefinidas via propriedade ErrorMessage de RangeAttribute):

Clique nesta imagem para visualizar com uma melhor resolução

Este exemplo foi também disponibilizado no GitHub:

https://github.com/renatogroffe/DotNet8-ConsoleApp-MinimumMaximumExclusive

Caso achem útil esta solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

E concluo este novo artigo com um convite…

Acompanhe neste novo evento ONLINE e GRATUITO no Canal .NET dicas, truques e alternativas úteis para o desenvolvimento Back-End e de APIs REST com .NET 7, C#, ASP.NET Core e Azure Functions. Ao longo da apresentação será abordado o uso de diferentes frameworks, serviços na nuvem, mensageria e boas práticas de forma a facilitar e tornar mais dinâmica a implementação de soluções baseadas na plataforma .NET no seu dia a dia.

Teremos ainda novidades do .NET 8 e C# 12 demonstradas através de exemplos práticos!

Quando: 30/10/2023 (segunda) a partir das 21:00 — horário de Brasília

Faça sua inscrição em:
https://www.meetup.com/dotnet-sao-paulo/events/295621042/

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker

No responses yet