mercoledì 11 maggio 2011

VS 2008 C#: partial classes raggruppate

C# (e credo anche VB) permette di splittare il codice di una classe in diversi files (wow! quasi come il C++!) attraverso il costrutto delle partial classes.

Ad esempio supponiamo di creare un Form: l'IDE creerà per noi un file Form1.cs e un file Form1.Designer.cs (quest'ultima contenente il codice auto-generato dal designer).
Supponiamo ora di voler aggiungere alcuni controlli, e separare il codice della gestione degli eventi generati dai controlli per evitare di raggruppare in un unico file sorgente tutto il codice.
Creiamo quindi un file Form1.Eventi.cs, contenente tutto il codice relativo alla risposta agli eventi del Form.
L'editor di Visual Studio 2008 non è in grado di accorpare automaticamente il nuovo file come fa invece con il Form1.Designer.cs....

Per ottenere questo effetto, occorre editare a mano il file di progetto (quello con estensione .csproj nel caso di C#).

Alla sezione realtiva a Form1.Eventi.cs:


<Compile Include="Form1.Eventi.cs">
   <SubType>Form</SubType>
</Compile>


Va aggiunta una riga:


<Compile Include="Form1.Eventi.cs">
   <DependentUpon>Form1.cs</DependentUpon>
   <SubType>Form</SubType>
</Compile>


Con questa direttiva, ricaricando il progetto, l'IDE raggrupperà in un unico ramo dell'albero tutti componenti parziali di Form1