Ekvivalence typů a vložené typy zprostředkovatele komunikace

Počínaje rozhraním .NET Framework 4 podporuje modul CLR (Common Language Runtime) vkládání informací o typech pro typy modelu COM přímo do spravovaných sestavení místo toho, aby spravovaná sestavení získala informace o typu pro typy modelu COM ze sestavení zprostředkovatele komunikace. Vzhledem k tomu, že informace o vloženém typu zahrnují pouze typy a členy, které jsou skutečně používány spravovaným sestavením, dvě spravovaná sestavení mohou mít velmi odlišná zobrazení stejného typu modelu COM. Každé spravované sestavení má jiný Type objekt, který představuje jeho zobrazení typu COM. Common Language Runtime podporuje ekvivalenci typů mezi těmito různými zobrazeními pro rozhraní, struktury, výčty a delegáty.

Ekvivalence typu znamená, že objekt modelu COM, který se předává z jednoho spravovaného sestavení do jiného, lze přetypovat na příslušný spravovaný typ v přijímajícím sestavení.

Poznámka

Ekvivalence typů a vložené typy interoperability zjednodušují nasazení aplikací a doplňků, které používají komponenty modelu COM, protože není nutné nasazovat závorová sestavení s aplikacemi. Pokud vývojáři sdílených komponent MODELU COM chtějí, aby jejich součásti používaly starší verze rozhraní .NET Framework, musí stále vytvářet primární sestavení zprostředkovatele komunikace ( PIA).

Ekvivalence typů

Pro rozhraní, struktury, výčty a delegáty je podporována ekvivalence typů MODELU COM. Typy modelu COM se kvalifikují jako ekvivalentní, pokud jsou splněny všechny následující podmínky:

  • Typy jsou obě rozhraní, nebo obě struktury, nebo oba výčty, nebo oba delegáty.

  • Typy mají stejnou identitu, jak je popsáno v další části.

  • Oba typy jsou způsobilé pro ekvivalenci typů, jak je popsáno v části Označování typů COM pro ekvivalenci typů .

Typ identity

Dva typy mají stejnou identitu, pokud se jejich obory a identity shodují, jinými slovy, pokud každý z nich má TypeIdentifierAttribute atribut a oba atributy mají odpovídající Scope vlastnosti a Identifier vlastnosti. Při porovnání se Scope nerozlišují malá a velká písmena.

Pokud typ atribut nemá TypeIdentifierAttribute nebo pokud má TypeIdentifierAttribute atribut, který neurčí obor a identifikátor, lze tento typ stále považovat za ekvivalenci následujícím způsobem:

Označení typů COM pro ekvivalenci typů

Typ můžete označit jako způsobilý pro ekvivalenci typů dvěma způsoby:

Viz také