Delen via


Samengestelde monikers

Een van de handigste functies van monikers is dat u monikers kunt samenvoegen of samenvoegen. Een samengestelde moniker is een moniker die een samenstelling is van andere monikers en de relatie tussen de delen kan bepalen. Hiermee kunt u het volledige pad samenstellen naar een object met twee of meer monikers die het equivalent zijn van gedeeltelijke paden. U kunt monikers van dezelfde klasse samenstellen (zoals twee bestands monikers) of van verschillende klassen (zoals een bestands moniker en een item moniker). Als u uw eigen monikerklasse zou schrijven, kunt u ook uw monikers opstellen met bestands- of item monikers. Het belangrijkste voordeel van een samengestelde is dat u één stukje code krijgt om elke mogelijke moniker te implementeren die een combinatie van eenvoudigere monikers is. Dit vermindert de behoefte aan specifieke aangepaste monikerklassen aanzienlijk.

Omdat monikers van verschillende klassen met elkaar kunnen worden samengesteld, bieden monikers de mogelijkheid om meerdere naamruimten te koppelen. Het bestandssysteem definieert een algemene naamruimte voor objecten die zijn opgeslagen als bestanden, omdat alle toepassingen de naam van een bestandssysteempad begrijpen. Op dezelfde manier definieert een containerobject ook een privénaamruimte voor de objecten die het object bevat, omdat geen container de namen begrijpt die door een andere container worden gegenereerd. Monikers staan toe dat deze naamruimten worden toegevoegd omdat bestands monikers en item monikers kunnen worden samengesteld. Een moniker-client kan de naamruimte voor alle objecten doorzoeken met behulp van één mechanisme. De client roept IMoniker::BindToObject aan op de moniker en de moniker-code verwerkt de rest. Een aanroep van IMoniker::GetDisplayName op een samengestelde maakt een naam met behulp van de samenvoeging van alle weergavenamen van de afzonderlijke monikers.

Bovendien kunt u, omdat u uw eigen monikerklasse kunt schrijven, kunt u aangepaste extensies toevoegen aan de naamruimte voor objecten.

Soms kunnen twee monikers van specifieke klassen op een speciale manier worden gecombineerd. Een bestands moniker die een onvolledig pad vertegenwoordigt en een andere bestands moniker die een relatief pad vertegenwoordigt, kan bijvoorbeeld worden gecombineerd om één bestands moniker te vormen die het volledige pad vertegenwoordigt. De bestands monikers "c:\work\art" kunnen bijvoorbeeld worden samengesteld met de relatieve bestands moniker "..\backup\myfile.doc" gelijk aan "c:\work\backup\myfile.doc". Dit is een voorbeeld van niet-generische samenstelling.

Algemene samenstelling, daarentegen, staat de verbinding van twee monikers toe, ongeacht hun klassen. U kunt bijvoorbeeld een item moniker opstellen op een bestands moniker, hoewel dat niet andersom.

Omdat een niet-generische samenstelling afhankelijk is van de klasse van de betrokken monikers, worden de details ervan gedefinieerd door de implementatie van een bepaalde monikerklasse. U kunt nieuwe typen niet-genrische composities definiëren als u een nieuwe monikerklasse schrijft. Algemene composities worden daarentegen gedefinieerd door OLE. Monikers die zijn gemaakt als gevolg van algemene samenstelling worden algemene samengestelde monikers genoemd.

Deze drie klassen, bestands monikers, item monikers en algemene samengestelde monikers, werken allemaal samen en ze zijn de meest gebruikte klassen van monikers.

Moniker-clients moeten IMoniker::ComposeWith aanroepen om een samengestelde moniker met een andere te maken. De moniker die het intern aangeroepen wordt, bepaalt of het een algemene of niet-generische samenstelling kan uitvoeren. Als de moniker-implementatie bepaalt dat een algemene samenstelling bruikbaar is, biedt OLE de CreateGenericComposite functie om dit te vergemakkelijken.

anti-monikers

klasse Monikers

bestands monikers

item monikers

Pointer Monikers