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.
Modul CLR (Common Language Runtime) v .NET 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í.
Note
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 nemá atribut TypeIdentifierAttribute nebo má atribut TypeIdentifierAttribute, který neuvádí obor a identifikátor, lze tento typ stále považovat za rovnocenný následujícím způsobem:
Pro rozhraní se místo vlastnosti GuidAttribute použije hodnota TypeIdentifierAttribute.Scope, a vlastnost Type.FullName (tj. název typu, včetně oboru názvů) se použije místo vlastnosti TypeIdentifierAttribute.Identifier.
Pro struktury, výčty a delegáty se namísto vlastnosti GuidAttribute použije vlastnost sestavení, a vlastnost Scope se použije místo vlastnosti Type.FullName.
Označení typů modelu COM pro ekvivalenci typů
Typ můžete označit jako způsobilý pro ekvivalenci typů dvěma způsoby:
TypeIdentifierAttribute Použijte atribut pro typ.
Nastavte typ jako importní typ COM. Rozhraní je typ importu COM, pokud má atribut ComImportAttribute. Rozhraní, struktura, výčet nebo delegát je typ COM importu, pokud má sestavení, ve kterém je definováno, atribut ImportedFromTypeLibAttribute.