marshal_as
Ta metoda konwertuje dane między środowiskami natywnymi i zarządzanymi.
Składnia
To_Type marshal_as<To_Type>(
From_Type input
);
Parametry
wkład
[in] Wartość, którą chcesz przeprowadzić marshaling do zmiennej To_Type
.
Wartość zwracana
Zmienna typu To_Type
, która jest przekonwertowaną wartością input
.
Uwagi
Ta metoda jest uproszczonym sposobem konwertowania danych między typami natywnymi i zarządzanymi. Aby określić, jakie typy danych są obsługiwane, zobacz Omówienie marshalingu w języku C++. Niektóre konwersje danych wymagają kontekstu. Te typy danych można przekonwertować przy użyciu klasy marshal_context.
Jeśli spróbujesz przeprowadzić marshaling pary typów danych, które nie są obsługiwane, marshal_as
wygeneruje błąd C4996 w czasie kompilacji. Przeczytaj komunikat dostarczony z tym błędem, aby uzyskać więcej informacji. Błąd C4996
można wygenerować dla nie tylko przestarzałych funkcji. Jednym z przykładów jest próba marshalingu pary typów danych, które nie są obsługiwane.
Biblioteka marshalingowa składa się z kilku plików nagłówkowych. Każda konwersja wymaga tylko jednego pliku, ale możesz uwzględnić dodatkowe pliki, jeśli potrzebujesz innych konwersji. Aby zobaczyć, które konwersje są skojarzone z którymi plikami, poszukaj w tabeli w pliku Marshaling Overview
. Niezależnie od konwersji, którą chcesz wykonać, wymaganie przestrzeni nazw jest zawsze skuteczne.
System::ArgumentNullException(_EXCEPTION_NULLPTR)
Zgłasza wartość , jeśli parametr wejściowy ma wartość null.
Przykład
W tym przykładzie marshalsuje z typu a const char*
do zmiennej System::String
.
// 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;
}
Wymagania
Plik nagłówka:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h lub <msclr\marshal_atl.h>>
Przestrzeń nazw: msclr::interop