Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sloučí do aktuálního oboru všechny obory metadat určené jedním nebo více předchozími voláními IMetaDataEmit::Merge.
Syntax
HRESULT MergeEnd ();
Parameters
Tato metoda nepřijímá žádné parametry.
Remarks
Tato rutina aktivuje skutečné sloučení metadat ze všech oborů importu určených předchozími voláními IMetaDataEmit::Mergedo aktuálního výstupního oboru.
Pro sloučení platí následující zvláštní podmínky:
Identifikátor verze modulu (MVID) se nikdy neimportuje, protože je jedinečný pro metadata v oboru importu.
Žádné existující vlastnosti pro celý modul se nepřepíší.
Pokud už byly vlastnosti modulu nastaveny pro aktuální obor, nenaimportují se žádné vlastnosti modulu. Pokud však vlastnosti modulu nebyly nastaveny v aktuálním oboru, importují se pouze jednou při prvním zjištění. Pokud se tyto vlastnosti modulu znovu zobrazí, jsou duplicitní. Pokud se porovnávají hodnoty všech vlastností modulu (s výjimkou MVID) a nebyly nalezeny žádné duplicity, vyvolá se chyba.
U definic typů (
TypeDef) nejsou žádné duplicity sloučeny do aktuálního oboru.TypeDefobjekty jsou kontrolovány duplicity u každého plně kvalifikovaného názvu objektu + GUID + číslo verze. Pokud existuje shoda s názvem nebo identifikátorem GUID a některé z dalších dvou prvků se liší, vyvolá se chyba. Jinak, pokud se všechny tři položky shodují, provede kurzorovou kontrolu, aby se zajistilo,MergeEndže položky jsou skutečně duplicitní. Pokud ne, vyvolá se chyba. Tato kontrola kurzoru hledá:Stejné deklarace členů, ke kterým dochází ve stejném pořadí. Členové, kteří jsou označeni příznakem
mdPrivateScope(viz Výčet CorMethodAttr ), nejsou zahrnuti v této kontrole; jsou sloučeny speciálně.Stejné rozložení třídy.
To znamená, že
TypeDefobjekt musí být vždy plně a konzistentně definován v každém oboru metadat, ve kterém je deklarován; pokud jsou jeho členské implementace (pro třídu) rozloženy do více kompilačních jednotek, předpokládá se, že úplná definice je přítomna v každém oboru a nikoli přírůstkové do každého oboru. Pokud jsou například názvy parametrů relevantní pro kontrakt, musí být vygenerovány stejným způsobem do každého oboru; pokud nejsou relevantní, neměly by být generovány do metadat.Výjimkou je, že
TypeDefobjekt může mít přírůstkové členy označené příznakemmdPrivateScope. Při jejich výskytuMergeEndje přírůstkově přidá do aktuálního oboru bez ohledu na duplicity. Vzhledem k tomu, že kompilátor rozumí privátnímu oboru, musí být kompilátor zodpovědný za vynucování pravidel.Relativní virtuální adresy (RVA) se neimportují ani slučují; Očekává se, že kompilátor tyto informace znovu vygeneruje.
Vlastní atributy se sloučí pouze v případech, kdy se sloučí položka, ke které jsou připojeny. Například vlastní atributy přidružené ke třídě se sloučí, když je třída poprvé zjištěna. Pokud jsou vlastní atributy přidružené k
TypeDefjednotce kompilace neboMemberDefkteré jsou specifické pro kompilační jednotku (například časové razítko kompilace člena), nejsou sloučeny a je na kompilátoru, aby tato metadata odebrala nebo aktualizovala.
Requirements
Platformy: Viz podporované operační systémy .NET.
Header: Cor.h
Library: CorGuids.lib