Site:  Cours VB.net  
8.4 Les 'régions',la compilation conditionnelle, les 'Attributs'.

 

Dans le code on peut ajouter des choses qui ne sont pas du code VB, mais plutôt des directives pour l'affichage, le compilateur ou le Runtime:

Les Régions.

 

Pour une meilleur visibilité, il est possible de créer des 'régions' de code. Une région peut être déroulée ou contractée.

 

Une région peut être déroulée: le code entre #Region et #End Region est visible (pour modifier le code par exemple):

 

 

 

-

 

#Region "Routine de Tri"

Sub QuickSort(ByVal debut As Integer, ByVal fin As Integer)

Dim pivot, gauche, droite, temp As Integer

Do

...

Loop Until gauche = droite

End Sub

#End Region

 

Si on clique sur le petit carré (avant #region), cela contracte la région et masque le code, on voit seulement un petit carré avec un plus et le nom de la région.

 

 

 

+

 
Routine de Tri

 

Cela permet de masquer une procédure en totalité.

Attention, cela ne permet pas de masquer seulement une partie du code mais la procédure entière.

 

Exemple:

 Dans une Classe de formulaire, il existe une région nommée 'Code généré par le Concepteur Windows Form' qui contient le code créant les contrôles du formulaire. Ce code est habituellement caché. 

 

 

La Compilation conditionnelle.

 

La compilation conditionnelle contrôle si les séquences de lignes sont traduites en code réel. Certaines lignes peuvent être ignorées pendant le processus de compilation.

Les instructions de compilation conditionnelle sont précédées de #

 

On utilise:

#if .. then

#else

#end if

 

 Exemple

#const Demo = True    'créer une constante conditionnelle

Class MaClasse
#if Demo then
  Sub F()
#else
  Sub G()
#end if

End Class

La compilation produit le résultat suivant :
 

Class C
Sub F()
End Class
 

Il suffit de changer la valeur de la constante pour compiler des parties différentes de code.

Noter que #const Demo crée une constante privée accessible uniquement dans le fichier.

En VB 2005 on peut définir une constante au niveau projet avec /define

/define const Demo=True

 

Les Attributs.

 

Les attributs peuvent être utilisés pour décrire votre code au runtime (fournir des informations supplémentaires) ou modifier le comportement de l'application au moment de l'exécution. Le Framework fournis de nombreux attributs , mais vous pouvez également créer vos propres attributs personnalisés.

 

Les attributs sont entre < et >  en VisualBasic.

Les attributs peuvent modifier le comportement des propriétés, méthodes, classes, assemblys. Ils couvrent différents aspects comme la compilation, la sécurité, les services Web...

 

Exemple: <Obsolete > Avec une procédure.

Déclarons une fonction Add comme obsolete, en plus, le compilateur affiche le message: 'Sera enlevé à la prochaine version'.

On utilise donc <Obsolete  > ou le nom complet de l'attribut: <System.ObsoleteAttribut>

 

 

<Obsolete("Sera enlevé à la prochaine version ")> Function Add(a as Integer, b as Integer) as Integer
Add = a + b - c
End Function
 

 

Exemple:<Browsable> avec un composant.

Dans un composant, je crée une Propertie nommée 'Valide', je ne veux pas qu'elle apparaisse dans la fenêtre 'propriétés' du composant; je veux qu'elle soit accessible uniquement par code:

 

Imports System.ComponentModel    'Classe chargées du comportement des composants.

 

<Browsable(False)> Property Valide() As Integer

 

 

Exemple:<ToolBoxBitMap> avec un composant.

Quand on crée un composant, on désire parfois avoir une icône propre à ce composant dans la boite à outils: 

 

 

<ToolBoxBitMap("C:MonIcone")> Public Class MaClasse

 

 

Exemple:<Serializable> avec une Classe.

Quand on crée une classe, on a parfois besoin qu'elle soit sérializable: 

 

 

<Serializable()> Public Class TestSimpleObject

Public member1 As Integer
Public member2 As String
Public member3 As String
Public member4 As Double

'Un member qui ne doit pas être sérialisé.
<NonSerialized()> Public member5 As String

Il est possible de faire un tas de choses avec les attibuts, mais cela devient vite très complexe.