Udostępnij za pośrednictwem


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

Zobacz też

Omówienie marshalingu w języku C++
marshal_context, klasa