Compartir a través de


Implementar la interfaz ICustomMarshaler

Para utilizar un contador de referencias personalizado es necesario aplicar el atributo MarshalAsAttribute al parámetro o campo cuya referencia se va a calcular. El atributo identifica el contador de referencias que activa el contenedor correspondiente.

El contador de referencias personalizado implementa la interfaz ICustomMarshaler para proporcionar los contenedores adecuados al motor de tiempo de ejecución, creando el contador de referencias personalizado la primera vez que es necesario calcular las referencias de un argumento. Llama a los métodos MarshalNativeToManaged y MarshalManagedToNative del contador de referencias personalizado para activar el contenedor correcto y, así, controlar la llamada. En la siguiente tabla se describen todos los métodos que expone la interfaz ICustomMarshaler.

Método de interfaz Descripción

MarshalNativeToManaged

Devuelve un contenedor personalizado al que se puede llamar en tiempo de ejecución y que puede calcular las referencias de la interfaz no administrada pasada como argumento. El contador de referencias debe devolver una instancia del contenedor personalizado al que se puede llamar en tiempo de ejecución para ese tipo.

MarshalManagedToNative

Devuelve un contenedor COM personalizado al que se puede llamar y que puede calcular la referencia de la interfaz administrada pasada como argumento. El contador de referencias debe devolver una instancia del contenedor COM personalizado al que se puede llamar para ese tipo.

CleanUpNativeData

Proporciona al contador de referencias personalizado la oportunidad de realizar la limpieza de contenedores devueltos por el método MarshalManagedToNative.

CleanUpManagedData

Proporciona al contador de referencias personalizado la oportunidad de realizar la limpieza de contenedores devueltos por el método MarshalNativeToManaged.

GetInstance

Recupera una instancia del contador de referencias personalizado. Este método estático puede crear una nueva instancia del contador de referencias personalizado cada vez o puede usar siempre la misma si el contador de referencias no tiene ningún estado. El servicio de cálculo de referencias llama al método para crear el contador de referencias siempre que se marque un parámetro o un campo con UnmanagedType.CustomMarshaler.

Vea también

Conceptos

Definir el tipo de cálculo de referencias
Utilizar un contador de referencias sustituto

Otros recursos

Cálculo de referencias personalizado