Ekvivalence typů a vložené typy vzájemné spolupráce

Počínaje rozhraním .NET Framework 4 modul CLR podporuje vkládání informací o typu pro typy modelu COM přímo do spravovaných sestavení, místo aby spravovaná sestavení vyžadovala získání informací o typu pro typy modelu COM ze sestavení vzájemné spolupráce. 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, mohou mít dvě spravovaná sestavení velmi odlišná zobrazení stejného typu modelu COM. Každé spravované sestavení má jiný Type objekt, který představuje jeho zobrazení typu COM. Modul CLR (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ý je předán z jednoho spravovaného sestavení do druhé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 vzájemné spolupráce zjednodušují nasazování aplikací a doplňků, které používají komponenty modelu COM, protože není nutné nasazovat sestavení vzájemné spolupráce s aplikacemi. Vývojáři sdílených komponent modelu COM stále musí vytvářet primární sestavení vzájemné spolupráce (PIA), pokud chtějí, aby jejich komponenty používaly dřívější verze rozhraní .NET Framework.

Ekvivalence typů

U rozhraní, struktur, výčtů a delegátů se podporuje ekvivalence typů modelu COM. Pokud jsou splněny všechny následující podmínky, jsou typy modelu COM kvalifikovat jako ekvivalentní:

  • 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 mají nárok na ekvivalenci typů, jak je popsáno v části Označení typů modelu COM pro ekvivalenci typů.

Identita typu

Dva typy se určují, že mají stejnou identitu, pokud se jejich obory a identity shodují, jinými slovy, pokud mají každý TypeIdentifierAttribute atribut, a oba atributy mají odpovídající Scope a Identifier vlastnosti. Porovnání Scope nerozlišuje malá a velká písmena.

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

Označení typů modelu COM pro ekvivalenci typů

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

Viz také