5 Minutos de Férias

Volta e não volta tiro 5 minutos de férias do mundo real e refugiu-me na escrita. Cromices, interesses mundanos e milhentas coisas que me interessam.

Subscribe

Agrupar classes no Visual Studio

Publicada por Bruno on domingo, 15 de maio de 2011

Uma das primeiras coisas que me intrigou no C# foi a funcionalidade das classes parciais.
Vindo do mundo do java lembro-me deste tema ter alimentado uma discussão de jantar com outro javardo sobre o prego a que isto podia levar.
Recordo-me em particular de ambos estarmos do mesmo lado na discussão, como que duas comadres a falarem da vida alheia.

O discurso punha de lado o jeito que as classes partiais dão para separar código gerado por uma ferramenta do código batido por um coder e centrava-se nesta inverdade:

Se se pretende decorar uma classe com lógica acrescida, extende-se a classe. Há o OOP e design patterns excelentes para diferenciar responsabilidade.

Hoje..amadureci :) Trabalho tanto com java como C# e aprendi a tirar o melhor de cada mundo (*) e para cada tarefa há uma ferramenta boa.
Recentemente precisei de separar numa classe facade a declaração de uma série de custom events e os respectivos eventhandlers e acabei por organizar a casa numa classe partial.
Feito isto rapidamente me apercebi de uma coisa. Não há forma de agrupar dois ficheiros no Visual Studio.
Em winforms ou WPF há aquele "+" mágico em que agrupa os dois ficheiros. E aqui? Cadê?

Há duas formas de agrupar ficheiros numa solução:

A forma ideial mas que não funciona no VS Express:

* Instalar o plugin VsCommands


A forma hardcore (aka dos pobres)

* Fechar o Visual Studio
* Editar o ficheiro de projecto (ex: myprojec.csproj)
* Procurar o elemento que se pretende agrupar no meio das tags
* Fazer o truque dos pézinhos com a tag
Ex: Agrupar o ficheiro Xpto.Events.cs dentro do Xpto.cs


<Compile Include="Xpto.cs" />
<Compile Include="Xpto.Events.cs">
<DependentUpon>Xpto.cs</DependentUpon>
</Compile>


* Gravar e arrancar o VS

E voila!
Espero que ajude :)



(*) PS: Um dia destes escrevo um artigo sobre a integração de Spring.NET e Ibatis numa aplicação C# :)

0 comentários: