Novidades do C# 13: Partial Properties

Renato Groffe
3 min readSep 17, 2024

--

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:

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

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:

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

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

Novidades do C# 13: params collections

--

--

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