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