Partager via


Monikers composites

L’une des fonctionnalités les plus utiles des monikers est que vous pouvez concaténer ou composer des monikers ensemble. Un moniker composite est un moniker qui est une composition d’autres monikers et peut déterminer la relation entre les parties. Cela vous permet d’assembler le chemin d’accès complet à un objet donné à deux monikers ou plus qui sont l’équivalent de chemins partiels. Vous pouvez composer des monikers de la même classe (par exemple, deux monikers de fichiers) ou de différentes classes (par exemple, un moniker de fichier et un moniker d’élément). Si vous écriviez votre propre classe moniker, vous pourriez également composer vos monikers avec des monikers de fichier ou d’élément. L’avantage fondamental d’un composite est qu’il vous donne un élément de code pour implémenter chaque moniker possible qui est une combinaison de monikers plus simples. Cela réduit considérablement le besoin de classes de moniker personnalisées spécifiques.

Étant donné que les monikers de différentes classes peuvent être composés les uns avec les autres, les monikers offrent la possibilité de joindre plusieurs espaces de noms. Le système de fichiers définit un espace de noms commun pour les objets stockés en tant que fichiers, car toutes les applications comprennent un nom de chemin d’accès au système de fichiers. De même, un objet conteneur définit également un espace de noms privé pour les objets qu’il contient, car aucun conteneur ne comprend les noms générés par un autre conteneur. Les monikers permettent à ces espaces de noms d’être joints, car les monikers de fichiers et les monikers d’élément peuvent être composés. Un client moniker peut rechercher l’espace de noms pour tous les objets à l’aide d’un mécanisme unique. Le client appelle simplement IMoniker ::BindToObject sur le moniker, et le code moniker gère le reste. Un appel à IMoniker ::GetDisplayName sur un composite crée un nom à l’aide de la concaténation de tous les noms d’affichage des monikers individuels.

En outre, étant donné que vous pouvez écrire votre propre classe moniker, la composition moniker vous permet d’ajouter des extensions personnalisées à l’espace de noms pour les objets.

Parfois, deux monikers de classes spécifiques peuvent être combinés d’une manière spéciale. Par exemple, un moniker de fichier représentant un chemin d’accès incomplet et un autre moniker de fichier représentant un chemin relatif peut être combiné pour former un moniker de fichier unique représentant le chemin d’accès complet. Par exemple, les monikers de fichier « c :\work\art » peuvent être composés avec le moniker de fichier relatif ..\backup\myfile.doc« égal à « c :\work\backup\myfile.doc». Il s’agit d’un exemple de composition non générique .

composition générique, d’autre part, permet la connexion de deux monikers, quelle que soit leur classe. Par exemple, vous pouvez composer un moniker d’élément sur un moniker de fichier, bien que ce ne soit pas, bien sûr, l’autre moyen de contourner.

Étant donné qu’une composition non générique dépend de la classe des monikers impliqués, ses détails sont définis par l’implémentation d’une classe moniker particulière. Vous pouvez définir de nouveaux types de compositions non génériques si vous écrivez une nouvelle classe moniker. En revanche, les compositions génériques sont définies par OLE. Les monikers créés à la suite de la composition générique sont appelés monikers composites génériques.

Ces trois classes, monikers de fichiers, monikers d’élément et monikers composites génériques, fonctionnent tous ensemble et sont les classes les plus couramment utilisées des monikers.

Les clients Moniker doivent appeler IMoniker ::ComposeWith pour créer un composite sur moniker avec un autre. Le moniker sur lequel il est appelé en interne décide s’il peut faire une composition générique ou non générique. Si l’implémentation de moniker détermine qu’une composition générique est utilisable, OLE fournit la fonction CreateGenericComposite pour faciliter cette opération.

anti-monikers

monikers de classe

monikers de fichiers

Monikers item

monikers pointeurs