Condividi tramite


MarshalMode Enumerazione

Definizione

Rappresenta le diverse modalità di marshalling utilizzate da CustomMarshallerAttribute per indicare quando si applica un marshaller.

public enum class MarshalMode
public enum MarshalMode
type MarshalMode = 
Public Enum MarshalMode
Ereditarietà
MarshalMode

Campi

Nome Valore Descrizione
Default 0

Tutte le modalità. Se non esiste alcun marshaller specifico per una determinata modalità di utilizzo, verrà usato un marshaller specificato con questa modalità di utilizzo.

ManagedToUnmanagedIn 1

Per valore e in parametri in scenari gestiti da non gestiti, ad esempio P/Invoke.

ManagedToUnmanagedRef 2

ref parametri in scenari gestiti da non gestiti, ad esempio P/Invoke.

ManagedToUnmanagedOut 3

out parametri e valori restituiti in scenari gestiti da non gestiti, ad esempio P/Invoke. Il marshaller esegue la conversione dal tipo non gestito al tipo gestito.

UnmanagedToManagedIn 4

Per valore e in parametri in scenari non gestiti da gestire, ad esempio P/Invoke inverso.

UnmanagedToManagedRef 5

ref parametri in scenari non gestiti da gestire, ad esempio P/Invoke inverso.

UnmanagedToManagedOut 6

out parametri e valori restituiti in scenari non gestiti da gestire, ad esempio P/Invoke inverso. Il marshaller esegue la conversione dal tipo gestito al tipo non gestito.

ElementIn 7

Elementi di matrici passate con in o per valore negli scenari di interoperabilità.

ElementRef 8

Elementi di matrici passati con ref o passati per valore con scenari di interoperabilità e InAttributeOutAttribute .

ElementOut 9

Elementi di matrici passati con out o passati per valore solo OutAttribute in scenari di interoperabilità.

Commenti

Ogni nome di membro segue il modello {CallDirection}{DataFlow}:

  • La direzione della chiamata (ManagedToUnmanaged o UnmanagedToManaged) indica il lato che avvia la chiamata. ManagedToUnmanaged si applica alle chiamate P/Invoke. UnmanagedToManaged si applica agli scenari P/Invoke inversi o COM in cui il codice nativo chiama nel codice gestito.
  • Il flusso di dati (In, Outo Ref) indica il modo in cui i dati vengono spostati rispetto alla chiamata. In significa che i dati passano dal chiamante al chiamato. Out indica i flussi di dati dal chiamato al chiamante, che include entrambi out i parametri e i valori restituiti. Ref indica i flussi di dati in entrambe le direzioni.

Ad esempio, ManagedToUnmanagedOut si applica quando il codice gestito chiama codice non gestito (P/Invoke) e i dati tornano al chiamante, ovvero vengono illustrati out i parametri e i valori restituiti. Il marshaller per questa modalità esegue la conversione dal tipo non gestito al tipo gestito.

Si applica a