Partager via


Types imbriqués

Un type imbriqué est un type qui est un membre d'un autre type. Un type imbriqué doit être étroitement associé au type qui le déclare et ne doit pas être utilisé en tant que type à usage général. Certains développeurs éprouvent des difficultés à appréhender correctement les types imbriqués. Il faut savoir qu'ils ne doivent pas être publiquement visibles sauf s'il existe une bonne raison de le faire. Dans une bibliothèque bien conçue, les développeurs doivent rarement avoir à utiliser des types imbriqués pour instancier des objets ou déclarer des variables.

Ceux-ci sont utiles lorsque le type de déclaration utilise et crée des instances du type imbriqué et que l'utilisation du type imbriqué n'est pas exposée dans des membres publics.

Utilisez des types imbriqués lorsque la relation entre le type imbriqué et son type externe est telle que la sémantique d'accessibilité de membre est souhaitable.

Dans la mesure où un type imbriqué est considéré comme un membre du type de déclaration, le type imbriqué a accès à tous les autres membres du type de déclaration.

N'utilisez pas les types imbriqués publics en tant que construction de regroupement logique ; utilisez pour cela les espaces de noms.

Évitez l'exposition publique des types imbriqués. Il existe une seule exception à cela : lorsque des variables du type imbriqué doivent être déclarées dans des scénarios tels que le sous-classement ou d'autres scénarios de personnalisation avancés mais cela reste exceptionnel.

N'utilisez pas de types imbriqués s'il existe de fortes probabilités que le type soit référencé en dehors du type de déclaration.

La déclaration de variables et l'instanciation d'objets pour les types imbriqués est généralement inutile dans des scénarios classiques. Par exemple, un délégué de gestionnaire d'événements qui gère un événement défini sur une classe ne doit pas être imbriqué dans la classe.

N'utilisez pas de types imbriqués s'ils doivent être instanciés par du code client. Si un type possède un constructeur public, il ne doit probablement pas être imbriqué.

Dans l'idéal, un type imbriqué est instancié et utilisé uniquement par le type qui le déclare. Si un type imbriqué possède un constructeur public, cela peut indiquer que le type est utilisé ailleurs que par son type de déclaration. En général, un type imbriqué ne doit pas effectuer de tâches pour des types autres que son type de déclaration. Si un type possède d'autres usages, il ne doit probablement pas être imbriqué.

Ne définissez pas un type imbriqué comme membre d'une interface. La plupart des langages ne prennent pas en charge une telle construction.

Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.

Portions Copyright Addison-Wesley Corporation. Tous droits réservés.

Pour plus d'informations sur les règles de conception, consultez « règles de conception d'infrastructure : Conventions idiomes et modèles carnet de bibliothèques réutilisables framework » Krzysztof Cwalina et Brad Abrams, publiés par Addison-Wesley, 2005.

Voir aussi

Concepts

Types et espaces de noms

Autres ressources

Instructions de conception de types

Instructions de conception pour le développement de bibliothèques de classes