Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato třída převádí data mezi nativními a spravovanými prostředími.
Syntaxe
class marshal_context
Poznámky
marshal_context Použijte třídu pro převody dat, které vyžadují kontext. Další informace o tom, které převody vyžadují kontext a který zařazovací soubor musí být zahrnut, naleznete v tématu Přehled zařazování v jazyce C++. Výsledek zařazování při použití kontextu je platný pouze do doby, než marshal_context se objekt zničí. Pokud chcete zachovat výsledek, musíte zkopírovat data.
Totéž marshal_context lze použít pro řadu převodů dat. Opětovné použití kontextu tímto způsobem neovlivní výsledky předchozích volání zařazování.
Členové
Veřejné konstruktory
| Název | Popis |
|---|---|
| marshal_context::marshal_context | Vytvoří objekt, který marshal_context se použije pro převod dat mezi spravovanými a nativními datovými typy. |
| marshal_context::~marshal_context | marshal_context Zničí objekt. |
Veřejné metody
| Název | Popis |
|---|---|
| marshal_context::marshal_as | Provede zařazování u konkrétního datového objektu a převede ho mezi spravovaným a nativním datovým typem. |
Požadavky
Hlavičkový soubor:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> nebo <msclr\marshal_atl.h>
Obor názvů: msclr::interop
marshal_context::marshal_context
Vytvoří objekt, který marshal_context se použije pro převod dat mezi spravovanými a nativními datovými typy.
marshal_context();
Poznámky
Některé převody dat vyžadují zařazování kontextu. Další informace o tom, které překlady vyžadují kontext a který zařazovací soubor musíte zahrnout do aplikace, naleznete v tématu Přehled zařazování v jazyce C++.
Příklad
Podívejte se na příklad pro marshal_context::marshal_as.
marshal_context::~marshal_context
marshal_context Zničí objekt.
~marshal_context();
Poznámky
Některé převody dat vyžadují zařazování kontextu. Další informace o tom, které překlady vyžadují kontext a který soubor zařazování musí být součástí vaší aplikace, najdete v tématu Přehled zařazování v jazyce C++ .
Odstranění objektu marshal_context zneplatní data převedená tímto kontextem. Pokud chcete zachovat data po zničení objektu marshal_context , musíte je ručně zkopírovat do proměnné, která bude zachována.
marshal_context::marshal_as
Provede zařazování u konkrétního datového objektu a převede ho mezi spravovaným a nativním datovým typem.
To_Type marshal_as<To_Type>(
From_Type input
);
Parametry
vstup
[v] Hodnota, kterou chcete zařadit do To_Type proměnné.
Vrácená hodnota
Proměnná typu To_Type , která je převedenou hodnotou input.
Poznámky
Tato funkce provádí zařazování u konkrétního datového objektu. Tuto funkci použijte pouze s převody uvedenými v tabulce v přehledu zařazování v jazyce C++.
Pokud se pokusíte zařadíte dvojici datových typů, které nejsou podporované, marshal_as vygeneruje se chyba C4996 v době kompilace. Další informace najdete ve zprávě dodané s touto chybou. Chybu C4996 je možné vygenerovat pro více než jen zastaralé funkce. Dvě podmínky, které vygenerují tuto chybu, se pokouší zařadit dvojici datových typů, které nejsou podporované, a snaží se použít marshal_as pro převod, který vyžaduje kontext.
Knihovna zařazování se skládá z několika souborů hlaviček. Jakýkoli převod vyžaduje jenom jeden soubor, ale pokud potřebujete jiné převody, můžete zahrnout další soubory. Tabulka indikuje Marshaling Overview in C++ , který soubor zařazování by měl být zahrnut pro každý převod.
Příklad
Tento příklad vytvoří kontext pro zařazování z System::String typu proměnné.const char * Převedená data nebudou platná za řádkem, který odstraní kontext.
// 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;
}