Równoważność typów i osadzone typy międzyoperacja
Począwszy od programu .NET Framework 4, środowisko uruchomieniowe języka wspólnego obsługuje osadzanie informacji o typach typów dla typów COM bezpośrednio w zarządzanych zestawach, zamiast wymagać od zarządzanych zestawów uzyskiwania informacji o typach dla typów COM z zestawów międzyoperacyjnych. Ponieważ informacje o typie osadzonym zawierają tylko typy i elementy członkowskie, które są faktycznie używane przez zestaw zarządzany, dwa zarządzane zestawy mogą mieć bardzo różne widoki tego samego typu MODELU COM. Każdy zarządzany zestaw ma inny Type obiekt reprezentujący jego widok typu COM. Środowisko uruchomieniowe języka wspólnego obsługuje równoważność typów między tymi różnymi widokami dla interfejsów, struktur, wyliczenia i delegatów.
Równoważność typu oznacza, że obiekt COM przekazywany z jednego zarządzanego zestawu do innego może być rzutowany do odpowiedniego typu zarządzanego w zestawie odbierającego.
Uwaga
Równoważność typów i osadzone typy międzyoperacyjności upraszczają wdrażanie aplikacji i dodatków korzystających ze składników COM, ponieważ nie jest konieczne wdrażanie zestawów międzyoperacyjnych z aplikacjami. Deweloperzy udostępnionych składników COM nadal muszą tworzyć podstawowe zestawy międzyoperacyjne (PIA), jeśli chcą, aby ich składniki były używane przez wcześniejsze wersje programu .NET Framework.
Równoważność typów
Równoważność typów COM jest obsługiwana w przypadku interfejsów, struktur, wyliczenia i delegatów. Typy MODELU COM kwalifikują się jako równoważne, jeśli spełnione są wszystkie następujące elementy:
Typy to zarówno interfejsy, jak i obie struktury albo oba wyliczenia lub oba delegaty.
Typy mają taką samą tożsamość, jak opisano w następnej sekcji.
Oba typy kwalifikują się do równoważności typów, zgodnie z opisem w sekcji Oznaczanie typów COM dla równoważności typów.
Tożsamość typu
Dwa typy są określane jako takie same, gdy ich zakresy i tożsamości są zgodne, innymi słowy, jeśli każdy z nich ma TypeIdentifierAttribute atrybut, a dwa atrybuty mają pasujące Scope i Identifier właściwości. Porównanie jest Scope niewrażliwe na wielkość liter.
Jeśli typ nie ma atrybutu TypeIdentifierAttribute lub jeśli ma TypeIdentifierAttribute atrybut, który nie określa zakresu i identyfikatora, typ można nadal uznać za równoważność w następujący sposób:
W przypadku interfejsów wartość GuidAttribute jest używana zamiast TypeIdentifierAttribute.Scope właściwości , a Type.FullName właściwość (czyli nazwa typu, w tym przestrzeń nazw) jest używana zamiast TypeIdentifierAttribute.Identifier właściwości .
W przypadku struktur, wyliczenia i delegatów GuidAttribute używany jest Scope zestaw zawierający zamiast właściwości , a Type.FullName właściwość jest używana zamiast Identifier właściwości .
Oznaczanie typów COM dla równoważności typów
Typ można oznaczyć jako uprawniony do równoważności typu na dwa sposoby:
TypeIdentifierAttribute Zastosuj atrybut do typu.
Ustaw typ importu COM. Interfejs jest typem importu MODELU COM, jeśli ma ComImportAttribute atrybut . Interfejs, struktura, wyliczenie lub delegat jest typem importu COM, jeśli zestaw, w którym jest zdefiniowany, ma ImportedFromTypeLibAttribute atrybut .