Vue d'ensemble des classes partielles dans Visual Basic .NET

Les classes partielles sont une fonctionnalité de VB.NET qui est utilisée presque partout, mais il n'y a pas beaucoup écrit à ce sujet. Cela peut être dû au fait qu'il n'y a pas encore beaucoup d'applications "développeur" évidentes pour cela. L'utilisation principale réside dans la façon dont les solutions ASP.NET et VB.NET sont créées dans Visual Studio, où c'est l'une de ces fonctionnalités qui est normalement «masquée».

Une classe partielle est simplement une définition de classe qui est divisée en plusieurs fichiers physiques. Les classes partielles ne font aucune différence pour le compilateur car tous les fichiers qui composent une classe sont simplement fusionnés en une seule entité pour le compilateur. Étant donné que les classes sont simplement fusionnées et compilées, vous ne pouvez pas mélanger les langues. Autrement dit, vous ne pouvez pas avoir une classe partielle en C # et une autre en VB. Vous ne pouvez pas non plus couvrir des assemblys avec des classes partielles. Ils doivent tous être dans la même assemblée.

instagram viewer

Cela est beaucoup utilisé par Visual Studio lui-même, en particulier dans les pages Web où il s'agit d'un concept clé dans les fichiers "code derrière". Nous verrons comment cela fonctionne dans un Visual Studio, mais comprendre ce qui a changé dans Visual Studio 2005 lors de son introduction est un bon point de départ.

Dans Visual Studio 2003, le code «masqué» pour une application Windows était tout dans une section appelée une région marquée «code généré par Windows Form Designer». Mais tout était toujours là dans le même fichier et il était facile de voir et de changer le code dans la Région. Tout du code est disponible pour votre application dans .NET. Mais puisque certains sont du code que vous devriez ne plaisante jamais, il était conservé dans cette région cachée. (Les régions peuvent toujours être utilisées pour votre propre code, mais Visual Studio ne les utilise plus.)

Dans Visual Studio 2005 (Framework 2.0), Microsoft a fait à peu près la même chose, mais ils ont caché le code à un endroit différent: une classe partielle dans un fichier séparé. Vous pouvez le voir au bas de l'illustration ci-dessous:


Cliquez ici pour afficher l'illustration
Cliquez sur le bouton Retour de votre navigateur pour revenir

L'une des différences de syntaxe entre Visual Basic et C # en ce moment est que C # requiert que tout les classes partielles sont qualifiées avec le mot-clé Partiel mais pas VB. Votre formulaire principal dans VB.NET n'a pas de qualificatifs spéciaux. Mais l'instruction de classe par défaut pour une application Windows vide ressemble à ceci en utilisant C #:

classe partielle publique Form1: Form

Les choix de conception de Microsoft sur des choses comme celle-ci sont intéressants. Lorsque Paul Vick, concepteur VB de Microsoft, a écrit sur ce choix de conception dans son blog Panopticon Central, le débat à ce sujet dans les commentaires s'est poursuivi pendant des pages et des pages.

Voyons comment tout cela fonctionne avec du vrai code sur la page suivante.

À la page précédente, le concept de classes partielles a été expliqué. Nous convertissons une seule classe en deux classes partielles sur cette page.

Voici un exemple de classe avec une méthode et une propriété dans un projet VB.NET

 Classe publique CombinedClass. Private m_Property1 As String. Public Sub New (ByVal Value As String) m_Property1 = Valeur. End Sub. Public Sub Method1 () MessageBox. Afficher (m_Property1) End Sub. Propriété Property1 () As String. Avoir. Renvoie m_Property1. Fin Get. Définissez (valeur ByVal As String) m_Property1 = valeur. Fin du jeu. Propriété de fin. Fin de classe 

Cette classe peut être appelée (par exemple, dans le code d'événement Click pour un objet Button) avec le code:

Dim ClassInstance As New _. CombinedClass ("À propos des classes partielles Visual Basic") ClassInstance. Méthode 1 ()

Nous pouvons séparer les propriétés et les méthodes de la classe dans différents fichiers physiques en ajoutant deux nouveaux fichiers de classe au projet. Nommez le premier fichier physique Partial.methods.vb et nommez le second Partial.properties.vb. Les noms de fichiers physiques doivent être différents, mais les noms de classe partiels seront les mêmes afin que Visual Basic puisse les fusionner lors de la compilation du code.

Ce n'est pas une exigence de syntaxe, mais la plupart des programmeurs suivent l'exemple dans Visual Studio d'utiliser des noms "pointillés" pour ces classes. Par exemple, Visual Studio utilise le nom par défaut Form1.Designer.vb pour la classe partielle d'un formulaire Windows. N'oubliez pas d'ajouter le mot clé Partial pour chaque classe et de remplacer le nom de classe interne (et non le nom de fichier) par le même nom. J'ai utilisé le nom de classe interne: PartialClass.

L'illustration ci-dessous montre tout le code de l'exemple et le code en action.


Cliquez ici pour afficher l'illustration
Cliquez sur le bouton Retour de votre navigateur pour revenir

Visual Studio «masque» les classes partielles telles que Form1.Designer.vb. Sur la page suivante, nous apprenons à le faire avec les classes partielles que nous venons de créer.

Les pages précédentes expliquent le concept des classes partielles et montrent comment les coder. Mais Microsoft utilise une astuce de plus avec les classes partielles générées par Visual Studio. L'une des raisons de leur utilisation est de séparer la logique d'application du code UI (interface utilisateur). Dans un grand projet, ces deux types de code peuvent même être créés par des équipes différentes. S'ils se trouvent dans des fichiers différents, ils peuvent être créés et mis à jour avec beaucoup plus de flexibilité. Mais Microsoft fait un pas de plus et masque également le code partiel dans l'Explorateur de solutions. Supposons que nous voulions masquer les méthodes et les propriétés des classes partielles dans ce projet? Il y a un moyen, mais ce n'est pas évident et Microsoft ne vous dit pas comment.

L'une des raisons pour lesquelles vous ne voyez pas l'utilisation de classes partielles recommandées par Microsoft est qu'elle n'est pas encore très bien prise en charge dans Visual Studio. Pour masquer les classes Partial.methods.vb et Partial.properties.vb que nous venons de créer, par exemple, nécessite une modification de la vbproj fichier. Il s'agit d'un fichier XML qui n'est même pas affiché dans l'Explorateur de solutions. Vous pouvez le trouver avec l'Explorateur Windows avec vos autres fichiers. Un fichier vbproj est illustré dans l'illustration ci-dessous.


Cliquez ici pour afficher l'illustration
Cliquez sur le bouton Retour de votre navigateur pour revenir

La façon dont nous allons le faire est d'ajouter une classe "racine" qui est complètement vide (il ne reste que l'en-tête Class et l'instruction End Class) et de dépendre de nos deux classes partielles. Alors, ajoutez une autre classe nommée PartialClassRoot.vb et changez à nouveau le nom interne en PartialClass pour qu'il corresponde aux deux premiers. Cette fois, j'ai ne pas utilisé le mot clé Partiel uniquement pour correspondre à la façon dont Visual Studio le fait.

Voici où un peu de connaissance de XML sera très utile. Étant donné que ce fichier devra être mis à jour manuellement, vous devez obtenir la bonne syntaxe XML. Vous pouvez modifier le fichier dans n'importe quel éditeur de texte ASCII - le Bloc-notes fonctionne très bien - ou dans un éditeur XML. Il s'avère que vous en avez un excellent dans Visual Studio et c'est ce qui est montré dans l'illustration ci-dessous. Mais vous ne pouvez pas modifier le fichier vbproj en même temps que vous modifiez le projet dans lequel il se trouve. Fermez donc le projet et ouvrez uniquement le fichier vbproj. Vous devriez voir le fichier affiché dans la fenêtre d'édition comme indiqué dans l'illustration ci-dessous.

(Noter la Compiler éléments pour chaque classe. Dépendant de les sous-éléments doivent être ajoutés exactement comme indiqué dans l'illustration ci-dessous. Cette illustration a été créée dans VB 2005 mais elle a également été testée dans VB 2008.)


Cliquez ici pour afficher l'illustration
Cliquez sur le bouton Retour de votre navigateur pour revenir

Pour beaucoup d'entre nous, il suffit probablement de savoir qu'il existe des classes partielles, juste pour que nous sachions ce qu'elles sont lorsque nous essayons de retrouver un bogue à l'avenir. Pour le développement de systèmes volumineux et complexes, ils pourraient être un petit miracle car ils peuvent aider à organiser le code d'une manière qui aurait été impossible auparavant. (Vous pouvez également avoir des structures partielles et des interfaces partielles!) Mais certaines personnes ont conclu que Microsoft les a inventées uniquement pour des raisons internes - pour améliorer la génération de code. L'auteur Paul Kimmel est même allé jusqu'à suggérer que Microsoft avait en fait créé des classes partielles pour réduire leurs coûts en facilitant l'externalisation des travaux de développement dans le monde entier.

Peut être. C'est le genre de chose qu'ils pourraient faire.

instagram story viewer