Digite a equivalência e tipos de interoperabilidade incorporados
Começando com o .NET Framework versão 4, o common language runtime oferece suporte a incorporação de informações de tipo para os tipos COM diretamente em assemblies gerenciados, em vez de exigir que os assemblies gerenciados obter informações de tipo para tipos de COM de assemblies de interoperabilidade. Como as informações de tipo incorporados incluem apenas os tipos e membros que são realmente usados por um assembly gerenciado, os dois assemblies gerenciados podem ter muito diferentes modos de exibição do mesmo tipo COM. Cada assembly gerenciado tenha uma diferente Type o objeto para representar o seu modo de exibição do tipo COM. O common language runtime oferece suporte ao tipo de equivalência entre esses modos de exibição diferentes para interfaces, estruturas, enumerações e delegados.
Tipo de equivalência significa que um objeto COM que é passado de um assembly gerenciado para outro pode ser convertido para o apropriado gerenciado tipo no assembly do receptor.
Observação
Equivalência de tipo e tipos de interoperabilidade incorporados simplificam a implantação de aplicativos e suplementos que usam componentes COM, porque não é necessário implantar assemblies de interoperabilidade com os aplicativos.Os desenvolvedores de componentes do COM compartilhado ainda tem que criar assemblies de interoperabilidade primários (PIAs) se quiser que seus componentes a serem usados por versões anteriores do.NET Framework.
Equivalência de tipo
Equivalência de tipos COM há suporte para interfaces, estruturas, enumerações e delegados. Tipos COM qualificam como equivalente se todos os itens a seguir forem verdadeiras:
Os tipos são tanto interfaces, ou ambas estruturas, ou ambos enumerações ou dois delegados.
Os tipos têm a mesma identidade, conforme descrito na próxima seção.
Ambos os tipos são qualificados para equivalência de tipo, conforme descrito no Tipos de COM marcação para o tipo de equivalência seção.
Identidade de tipo
Dois tipos são determinados a ter a mesma identidade quando seus escopos e identidades correspondem, em outras palavras, se cada um deles tem o TypeIdentifierAttribute atributo e os dois atributos têm correspondência Scope e Identifier Propriedades. A comparação para Scope não diferencia.
Se não tiver um tipo de TypeIdentifierAttribute atributo, ou se tiver um TypeIdentifierAttribute atributo que especifica o escopo e o identificador, o tipo pode ainda ser considerado para equivalência da seguinte maneira:
Para interfaces, o valor da GuidAttribute é usado em vez da TypeIdentifierAttribute.Scope propriedade e o Type.FullName (ou seja, o nome do tipo, incluindo o namespace) de propriedade é usado em vez da TypeIdentifierAttribute.Identifier propriedade.
Para estruturas, enumerações e delegados, o GuidAttribute do assembly contendo é usado em vez da Scope propriedade e o Type.FullName propriedade é usada em vez da Identifier propriedade.
Tipos COM a marcação para o equivalência de tipo
Você pode marcar um tipo como qualificado para equivalência de tipo de duas maneiras:
Aplicar o TypeIdentifierAttribute atributo para o tipo.
Verifique o tipo de um tipo de importação de COM. Uma interface é um tipo de importação de COM, se ele tiver o ComImportAttribute atributo. Uma interface, estrutura, enumeração ou representante é um tipo de importação COM se o assembly no qual está definida tem o ImportedFromTypeLibAttribute atributo.