marshal_context-Klasse
Diese Klasse konvertiert Daten zwischen nativen und verwalteten Umgebungen.
Syntax
class marshal_context
Hinweise
Verwenden Sie die marshal_context
Klasse für Datenkonvertierungen, die einen Kontext erfordern. Weitere Informationen dazu, welche Konvertierungen einen Kontext erfordern und welche Marshallingdatei einbezogen werden muss, finden Sie unter Übersicht über das Marshalling in C++. Das Ergebnis des Marshallings, wenn Sie einen Kontext verwenden, ist nur gültig, bis das marshal_context
Objekt zerstört wird. Um Das Ergebnis beizubehalten, müssen Sie die Daten kopieren.
Dasselbe marshal_context
kann für zahlreiche Datenkonvertierungen verwendet werden. Die erneute Wiederverwendung des Kontexts wirkt sich nicht auf die Ergebnisse aus vorherigen Marshallingaufrufen aus.
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
marshal_context::marshal_context | Erstellt ein marshal_context Objekt, das für die Datenkonvertierung zwischen verwalteten und systemeigenen Datentypen verwendet werden soll. |
marshal_context::~marshal_context | Zerstört ein marshal_context -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
marshal_context::marshal_as | Führt das Marshalling für ein bestimmtes Datenobjekt aus, um es zwischen einem verwalteten und einem systemeigenen Datentyp zu konvertieren. |
Anforderungen
Headerdatei:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> oder <msclr\marshal_atl.h>
Namespace: msclr::interop
marshal_context::marshal_context
Erstellt ein marshal_context
Objekt, das für die Datenkonvertierung zwischen verwalteten und systemeigenen Datentypen verwendet werden soll.
marshal_context();
Hinweise
Einige Datenkonvertierungen erfordern einen Marshallkontext. Weitere Informationen dazu, welche Übersetzungen einen Kontext erfordern und welche Marshallingdatei Sie in Ihre Anwendung einbeziehen müssen, finden Sie unter Übersicht über das Marshalling in C++.
Beispiel
Sehen Sie sich das Beispiel für marshal_context::marshal_as an.
marshal_context::~marshal_context
Zerstört ein marshal_context
-Objekt.
~marshal_context();
Hinweise
Einige Datenkonvertierungen erfordern einen Marshallkontext. Weitere Informationen dazu, welche Übersetzungen einen Kontext erfordern und welche Marshallingdatei in Ihre Anwendung aufgenommen werden muss, finden Sie unter Übersicht über das Marshalling in C++ .
Durch das Löschen eines marshal_context
Objekts werden die in diesem Kontext konvertierten Daten ungültig. Wenn Sie Ihre Daten nach dem Löschen eines marshal_context
Objekts beibehalten möchten, müssen Sie die Daten manuell in eine Variable kopieren, die beibehalten wird.
marshal_context::marshal_as
Führt das Marshalling für ein bestimmtes Datenobjekt aus, um es zwischen einem verwalteten und einem systemeigenen Datentyp zu konvertieren.
To_Type marshal_as<To_Type>(
From_Type input
);
Parameter
input
[in] Der Wert, den Sie einer To_Type
Variablen marshallen möchten.
Rückgabewert
Eine Variable vom Typ To_Type
, die den konvertierten Wert von input
.
Hinweise
Diese Funktion führt das Marshalling für ein bestimmtes Datenobjekt aus. Verwenden Sie diese Funktion nur mit den Konvertierungen, die in der Tabelle in der Übersicht über das Marshalling in C++ angegeben sind.
Wenn Sie versuchen, ein nicht unterstütztes Datentyppaar zu marshallen, marshal_as
wird zur Kompilierungszeit ein Fehler C4996 generiert. Weitere Informationen zu dem Fehler finden Sie in der zugehörigen Meldung. Der Fehler C4996
kann auch bei anderen Problemen als veralteten Funktionen generiert werden. Zwei Bedingungen, die diesen Fehler generieren, versuchen, ein Paar von Datentypen zu marshallen, die nicht unterstützt werden und versuchen, für eine Konvertierung zu verwenden marshal_as
, die einen Kontext erfordert.
Die Marshallingbibliothek besteht aus mehreren Headerdateien. Für jede Konvertierung ist nur eine Datei erforderlich, Sie können bei Bedarf jedoch zusätzliche Dateien für andere Konvertierungen einbinden. Die Tabelle gibt Marshaling Overview in C++
an, welche Marshallingdatei für jede Konvertierung eingeschlossen werden soll.
Beispiel
In diesem Beispiel wird ein Kontext für das Marshallen von einem System::String
Variablentyp zu einem const char *
Variablentyp erstellt. Die konvertierten Daten sind nach der Zeile, die den Kontext löscht, nicht gültig.
// marshal_context_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>
using namespace System;
using namespace msclr::interop;
int main() {
marshal_context^ context = gcnew marshal_context();
String^ message = gcnew String("Test String to Marshal");
const char* result;
result = context->marshal_as<const char*>( message );
delete context;
return 0;
}