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

Renato Groffe
2 min readApr 10, 2023

--

Durante o mês de Março/2023 a Microsoft disponibilizou o Preview 2 do .NET 8, com diversas melhorias envolvendo a utilização de Data Annotations. Maiores informações podem ser encontradas no site oficial da plataforma .NET:

Uma dessas novidades está na possibilidade de definir os valores permitidos para uma propriedade com o tipo AllowedValuesAttribute, mais uma estrutura que passa a integrar o namespace System.ComponentModel.DataAnnotations.

Na listagem a seguir temos um exemplo de uso de AllowedValuesAttribute com a classe Estado:

  • Este atributo foi associado à propriedade CodRegiao (código da região de um estado) e recebe um array como parâmetro com uma sequência de valores possíveis, além de permitir que se defina um descritivo da inconsistência na propriedade ErrorMessage;
  • As propriedades CodRegiao e Nome foram também marcadas com RequiredAttribute, indicando-se com isto a necessidade de preenchimento obrigatório das mesmas.

Já na próxima listagem está o conteúdo do arquivo Program.cs:

  • Um array do tipo Estado foi inicializado com 6 instâncias, de forma a testar a utilização de AllowedValuesAttribute;
  • O método TryValidateObject da classe Validator (namespace System.ComponentModel.DataAnnotations) foi acionado, retornando informações sobre inconsistências de acordo com as Data Annotations especificadas no tipo Estado.

O resultado da execução desta Console Application (a partir do Visual Studio 2022 17.6.0 Preview 2) está na imagem seguinte, com a inconsistência encontrada destacada em vermelho:

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

Disponibilizei este exemplo também no GitHub:

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

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!

--

--

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