Novidades do C# 13: Partial Properties
Partial classes e partial methods são construções em C# que possibilitam uma maior organização do código e extensibilidade, estando presente desde as primeiras versões da linguagem (muito antes do advento do .NET Core). Partial classes estão comumente associadas à geração automática de código, representando bons exemplos de uso deste tipo de estrutura aplicações desktop criadas com Windows Forms e WPF (o próprio Visual Studio cuida da implementação de código para a renderização de controles visuais a partir de partial classes). Já partial methods podem ser um importante aliado na customização de funcionalidades pré-existentes, já que sua implementação tem caráter opcional.
Com o C# 13 temos uma novidade relacionada a estas capacidades: a possibilidade de utilização de partial properties!
Na listagem a seguir podemos observar a implementação da classe estática ValidationHelpers, em um exemplo baseado no uso do .NET 8. O atributo GeneratedRegex no partial method IsRelationalDatabase envolve o uso de um source generator, recebendo como parâmetro uma expressão regular e retornando como resultado uma instância do tipo Regex (namespace System.Text.RegularExpressions). Por estarmos tratando aqui de um source generator (tipo GeneratedRegexAttribute), o código correspondente será gerado em tempo de compilação:
Já a próxima listagem traz o código para o arquivo Program.cs, com o uso do método IsRelationalDatabase de ValidationHelpers:
Teremos como resultado da execução desse exemplo:
O código desta aplicação foi disponibilizado no GitHub:
https://github.com/renatogroffe/DotNet8-ConsoleApp-PartialMethod-GeneratedRegex
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!
No próximo exemplo temos uma nova versão da classe ValidationHelpers criada com C# 13 + .NET 9, já considerando desta vez o uso de IsRelationalDatabase como uma Partial Property:
E a próxima listagem traz um exemplo de utilização da Partial Property IsRelationalDatabase (retornando também uma instância do tipo Regex):
O resultado da execução dessa aplicação está na próxima imagem:
OBSERVAÇÃO: Os testes aqui descritos fizeram uso do Release Candidate 1 do .NET 9.
O projeto demonstrando esta nova capacidade que integra o C# 13 também está no GitHub:
https://github.com/renatogroffe/CSharp13-ConsoleApp-PartialProperty
Caso também achem útil esta solução, peço novamente um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!
E para finalizar, confira também outros artigos que publiquei anteriormente sobre novidades do C# 13:
Novidades do C# 13: melhorias na inicialização de Collections