Freigeben über


MarshalMode Enumeration

Definition

Stellt die verschiedenen Marshallingmodi dar, die verwendet werden CustomMarshallerAttribute , um anzugeben, wann ein Marshaller angewendet wird.

public enum class MarshalMode
public enum MarshalMode
type MarshalMode = 
Public Enum MarshalMode
Vererbung
MarshalMode

Felder

Name Wert Beschreibung
Default 0

Alle Modi. Ein marshaller, der mit diesem Modus angegeben ist, wird verwendet, wenn kein bestimmter Marshaller für einen bestimmten Verwendungsmodus vorhanden ist.

ManagedToUnmanagedIn 1

Nach-Wert und in Parameter in nicht verwalteten Szenarien, z. B. P/Invoke.

ManagedToUnmanagedRef 2

ref Parameter in szenarien mit verwalteten zu verwaltenden Szenarien, z. B. P/Invoke.

ManagedToUnmanagedOut 3

out Parameter und Rückgabewerte in nicht verwalteten Szenarien, z. B. P/Invoke. Der Marshaller konvertiert vom nicht verwalteten Typ in den verwalteten Typ.

UnmanagedToManagedIn 4

Nach-Wert und in Parameter in nicht verwalteten Szenarien, z. B. Reverse P/Invoke.

UnmanagedToManagedRef 5

ref Parameter in nicht verwalteten Szenarien, z. B. Reverse P/Invoke.

UnmanagedToManagedOut 6

out Parameter und Rückgabewerte in nicht verwalteten Szenarien, z. B. Reverse P/Invoke. Der Marshaller konvertiert vom verwalteten Typ in den nicht verwalteten Typ.

ElementIn 7

Elemente von Arrays, die in Interopszenarien mit in oder nach Wert übergeben werden.

ElementRef 8

Elemente von Arrays, die mit ref sowohl als OutAttribute auch InAttribute in Interoperabilitätsszenarien übergeben oder als Wert übergeben werden.

ElementOut 9

Elemente von Arrays, die nur in Interoperabilitätsszenarien mit out einem wertbasierten Wert OutAttribute übergeben oder übergeben werden.

Hinweise

Jeder Membername folgt dem Muster {CallDirection}{DataFlow}:

  • Anrufrichtung (ManagedToUnmanaged oder UnmanagedToManaged) gibt an, welche Seite den Anruf initiiert. ManagedToUnmanaged gilt für P/Invoke-Aufrufe. UnmanagedToManaged gilt für Reverse P/Invoke- oder COM-Szenarien, in denen systemeigener Codeaufrufe in verwalteten Code erfolgt.
  • Der Datenfluss (In, oder Ref) gibt an, Outwie Daten relativ zum Aufruf verschoben werden. In bedeutet, dass Datenflüsse vom Anrufer zum Angerufenen fließen. Out bedeutet, dass Datenflüsse von Angerufenen zu Aufrufer fließen, die sowohl Parameter als auch out Rückgabewerte enthalten. Ref bedeutet, dass Daten in beide Richtungen fließen.

Gilt beispielsweise, ManagedToUnmanagedOut wenn verwalteter Code nicht verwalteten Code (P/Invoke) aufruft und Daten zurück an den Aufrufer fließen – dies deckt out Parameter und Rückgabewerte ab. Der Marshaller für diesen Modus wird vom nicht verwalteten Typ in den verwalteten Typ konvertiert.

Gilt für: