Novidades do .NET 8: melhorias na validação de intervalos ao utilizar RangeAttribute
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):
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/