Información general de la serialización en C++/CLI

En modo mixto, deben serializar los datos entre los tipos nativos y los administrados. La biblioteca de serialización le ayuda a serializar y convertir los datos de una manera sencilla. La biblioteca de serialización consta de un conjunto de funciones y una clase marshal_context que realiza serializaciones para tipos comunes. La biblioteca se define en estos encabezados en el directorio include/msclr de la edición de Visual Studio:

Encabezado Descripción
serializar.h Funciones de serialización sin contexto y clase de marshal_context
serializar_atl.h Funciones para serializar tipos ATL
serializar_cppstd.h Funciones para serializar tipos estándar de C++
marshal_windows.h Funciones para serializar tipos de Windows

La ruta de acceso predeterminada para la carpeta msclr es similar a esta en función de la edición que tenga y el número de compilación:

C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Enterprise\\VC\\Tools\\MSVC\\14.15.26528\\include\\msclr

Puede utilizar la biblioteca de serialización de referencias con o sin una clase marshal_context. Algunas conversiones requieren un contexto. Otras conversiones se pueden implementar mediante la función marshal_as. En la tabla siguiente se enumeran las conversiones actuales compatibles y se indica si requieren un contexto y el archivo de serializar que se debe incluir:

De tipo A tipo Método serializar Incluir archivo
System::String^ const char* serializar_context serializar.h
const char* System::String^ serializar_as serializar.h
char * System::String^ serializar_as serializar.h
System::String^ const wchar_t* serializar_context serializar.h
const wchar_t* System::String^ serializar_as serializar.h
wchar_t * System::String^ serializar_as serializar.h
System::IntPtr HANDLE serializar_as marshal_windows.h
HANDLE System::IntPtr serializar_as marshal_windows.h
System::String^ BSTR serializar_context marshal_windows.h
BSTR System::String^ serializar_as serializar.h
System::String^ bstr_t serializar_as marshal_windows.h
bstr_t System::String^ serializar_as marshal_windows.h
System::String^ std::string serializar_as serializar_cppstd.h
std::string System::String^ serializar_as serializar_cppstd.h
System::String^ std::wstring serializar_as serializar_cppstd.h
std::wstring System::String^ serializar_as serializar_cppstd.h
System::String^ <char> serializar_as serializar_atl.h
<char> System::String^ serializar_as serializar_atl.h
System::String^ <wchar_t> serializar_as serializar_atl.h
<wchar_t> System::String^ serializar_as serializar_atl.h
System::String^ CComBSTR serializar_as serializar_atl.h
CComBSTR System::String^ serializar_as serializar_atl.h

El cálculo de referencias requiere un contexto solo cuando se calcula de tipos de datos administrados a tipos de datos nativos y el tipo nativo que se va a convertir no tiene un destructor para la limpieza automática. El contexto de serialización destruye el tipo de datos nativo asignado en su destructor. Por consiguiente, las conversiones que requieren un contexto serán válidas solo hasta que se elimine el contexto. Para guardar cualquier valor de cálculo de referencias, debe copiar los valores a sus propias variables.

Nota:

Si ha incrustado valores NULLen la cadena, el resultado de serializar la cadena no se puede garantizar. Los valores NULL incrustados pueden hacer que la cadena se trunque o no pueda conservarse.

Este ejemplo muestra cómo incluir el directorio msclr en una declaración de encabezado de inclusión:

#include "msclr\marshal_cppstd.h"

La biblioteca de cálculo de referencias es extensible para que pueda agregar sus propios tipos de serialización. Para obtener más información sobre cómo extender la biblioteca de serialización, vea Cómo: Extender la biblioteca de serialización.

Consulte también

Biblioteca de compatibilidad de C++
Cómo: Extender la biblioteca de serialización