marshal_as
Bei dieser Methode werden Daten zwischen systemeigenen und verwalteten Umgebungen konvertiert.
To_Type marshal_as<To_Type>(
From_Type input
);
Parameter
- [in] input
Der Wert, der zu einer To_Type-Variable gemarshallt werden soll.
Rückgabewert
Eine Variable vom Typ To_Type, bei dem es sich um den konvertierten Wert von input handelt.
Hinweise
Diese Methode ist eine vereinfachte Möglichkeit zum Konvertieren von Daten zwischen systemeigenen und verwalteten Typen. Informationen zu den unterstützten Datentypen finden Sie unter Übersicht über das Marshaling in C++. Einige Datenkonvertierungen erfordern einen Kontext. Sie können diese Datentypen mithilfe der marshal_context-Klasse konvertieren.
Wenn Sie versuchen, ein Paar nicht unterstützte Datentypen zu marshallen, generiert marshal_as beim Kompilieren den Fehler C4996. 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. Dazu zählt beispielsweise der Versuch, ein Paar von Datentypen zu marshallen, die nicht unterstützt werden.
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. Informationen darüber, welche Konvertierungen welchen Dateien zugeordnet sind, finden Sie in der Tabelle in Marshaling Overview. Unabhängig vom Typ der durchzuführenden Konvertierung ist die Namespaceanforderung immer gültig.
Beispiel
In diesem Beispiel erfolgt das Marshalling von einem const char*- zu einem System::String-Variablentyp.
// marshal_as_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>
using namespace System;
using namespace msclr::interop;
int main() {
const char* message = "Test String to Marshal";
String^ result;
result = marshal_as<String^>( message );
return 0;
}
Anforderungen
Headerdatei: <msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> oder <msclr\marshal_atl.h>
Namespace: msclr::interop