Compartilhar via


Empacotamento personalizado

Essencialmente, um empacotador fornece uma ponte entre a funcionalidade antigas e novas interfaces. Empacotamento personalizado permite que os clientes projetados para trabalhar com uma interface antiga também trabalhar com servidores que implementam apenas uma nova interface. Empacotamento personalizado também permite que clientes criados para trabalhar com uma nova interface trabalhar com servidores que expõem a interface antiga.

Em vez de usar o empacotador de interoperabilidade, você pode projetar um empacotador personalizado para uma interface que apresenta o comportamento de empacotamento diferente ou expõe a interface para modelo de objeto componente (COM) de maneira diferente. Usando um empacotador personalizado, você pode minimizar a distinção entre o novo.NET Framework components e componentes COM existentes.

Por exemplo, suponha que você está desenvolvendo uma interface gerenciada chamada INew. Quando essa interface é exposta a COM por meio de um COM callable wrapper padrão, ele tem os mesmos métodos, como a interface gerenciada e usa as regras empacotamento incorporadas interop marshaler. Agora, suponha que uma interface conhecida do COM chamado IOld já oferece a mesma funcionalidade que o INew interface. Introduzindo um empacotador personalizado, você pode fornecer uma implementação não gerenciada do IOld que simplesmente delega as chamadas para a implementação gerenciada da INew interface. O empacotador personalizado essencialmente atua como uma ponte entre as interfaces gerenciadas e não gerenciadas.

Observe que os empacotadores personalizados não são chamados durante a chamada do lado gerenciado para o lado de não gerenciado em uma interface somente de distribuição.

Tópicos relacionados

Título

Descrição

A definição do tipo de empacotamento

Descreve como preparar as interfaces envolvidas na definição de um empacotador personalizado.

Implementando a Interface ICustomMarshaler

Descreve as opções na preparação de um empacotador personalizado.

Usando um empacotador substituto

Descreve como usar o MarshalAsAttribute atributo para inserir um empacotador personalizado.

Interop Marshaling

Descreve o empacotamento para invocação de plataforma e COM interop.

Referência

System.Runtime.InteropServices.ICustomMarshaler

System.Runtime.InteropServices.MarshalAsAttribute