Condividi tramite


Implementazione dell'interfaccia ICustomMarshaler

Per utilizzare un gestore di marshalling personalizzato, è necessario applicare l'attributo MarshalAsAttribute al parametro o al campo di cui si desidera effettuare il marshalling. L'attributo identifica il gestore di marshalling personalizzato che attiva il wrapper appropriato.

Il gestore di marshalling personalizzato implementa l'interfaccia ICustomMarshaler Interface per fornire al runtime i wrapper appropriati. Il gestore di marshalling personalizzato viene creato la prima volta che occorre effettuare il marshalling di un argomento. Il runtime chiama i metodi MarshalNativeToManaged e MarshalManagedToNative del gestore di marshalling personalizzato per attivare il wrapper corretto in grado di gestire la chiamata. Nella tabella che segue vengono descritti i metodi esposti dall'interfaccia ICustomMarshaler.

Metodo di interfaccia Descrizione

MarshalNativeToManaged

Restituisce un Runtime Callable Wrapper personalizzato in grado di effettuare il marshalling dell'interfaccia non gestita passata come argomento. Il gestore di marshalling deve restituire un'istanza del Runtime Callable Wrapper personalizzato per quel tipo.

MarshalManagedToNative

Restituisce un COM Callable Wrapper personalizzato che effettua il marshalling dell'interfaccia gestita passata come argomento. Il gestore di marshalling deve restituire un'istanza del COM Callable Wrapper personalizzato per quel tipo.

CleanUpNativeData

Consente al gestore di marshalling personalizzato di svolgere le necessarie operazioni di pulitura del wrapper restituito dal metodo MarshalManagedToNative.

CleanUpManagedData

Consente al gestore di marshalling personalizzato di svolgere le necessarie operazioni di pulitura del wrapper restituito dal metodo MarshalNativeToManaged.

GetInstance

Recupera un'occorrenza del gestore di marshalling personalizzato. Tale metodo statico è in grado di creare ogni volta una nuova istanza del gestore di marshalling personalizzato. Il metodo può anche utilizzare sempre la stessa istanza del gestore di marshalling personalizzato, posto che questo non mantenga informazioni sullo stato. Il metodo viene chiamato dal servizio di marshalling per creare il gestore di marshalling ogni volta che un parametro o un campo è contrassegnato con UnmanagedType.CustomMarshaler.

Vedere anche

Concetti

Definizione del tipo di marshalling
Utilizzo di un gestore di marshalling sostitutivo

Altre risorse

Marshalling personalizzato