O snippet “prop” no Visual Studio 2008

2008-08-16

Um dos snippets mais usados em C# é o “prop”, que escreve o código base de uma propriedade de uma classe, com a declaração do campo privado, a propriedade publica e a definição dos métodos de get e set. No Visual Studio 2005  e para o C#2.0, o snippet tinha a aparência do tipo:

Este até é o do snippet usado pelo Visual Studio 2005. escrevendo “prop” e carregando em Tab duas vezes, o IDE automaticamente geava este código, onde era necessário mudar apenas o tipo, o nome do atributo e o da propriedade.

No Visual Studio 2008, este código mudou. O 2008 aproveita a auto-implementação das propriedades, definida no C# 3.0, em que o a definição necessita de ser:

Muito mais reduzido e muito mais simplificado – basta definir o tipo e o nome da propriedade; a parte privada e a lógica de atribuição é criada pelo compilador. Este código é agradável, quando a implementação pretendida é simples. O código tb ocupa muito menos espaço, o que pode ajudar à leitura da estrutura da classe. Infelizmente, não é perfeito, visto que é por vezes útil trabalhar a lógica de atribuição, ou se o tipo é nullável, a lógica de atribuição tem de ser obrigatoriamente trabalhada.

A solução? Definir novos snippets :D. Essencialmente basta definir um (ou vários novos snippets) para suportar as variantes, e o assunto fica resolvido. Eu aproveitei a oportunidade para implementar o do 2.0 em duas formas. A primeira é a clássica, com a definição do atributo e dos métodos de get e set. Também, habitualmente defino o elemento privado com o prefixo “_” e o mesmo nome da propriedade; Também costumo incluir um valor predefinido, o que era chato de inserir com o snippet original (obrigava a sair do bloco para poder retornar, senão incluía o valor no nome do atributo…); Também tenho interesse em inserir a informação de serialização. Por fim, fiz igual, mas considerando o tipo nullável.

O resultado:

Basta criar um ficheiro, tipo props.snippet, e no Visual Studio importar o ficheiro para os snippets de C#. A partir daí, as declarações “propc” e “propn” ficam disponíveis, sendo o primeiro para o tipos “normais” e o “propn” para propriedades baseados em tipos anulláveis. Também podem descarregar o ficheiro daqui. Customize at will!

Também podem ver mais algumas notas em http://blogs.msdn.com/wriju/archive/2007/10/04/visual-studio-2008-automatic-property-is-the-default-snippet.aspx