Bagikan melalui


Kelas marshal_context

Kelas ini mengonversi data antara lingkungan asli dan terkelola.

Sintaks

class marshal_context

Keterangan

marshal_context Gunakan kelas untuk konversi data yang memerlukan konteks. Untuk informasi selengkapnya tentang konversi mana yang memerlukan konteks dan file marshaling mana yang harus disertakan, lihat Gambaran Umum marshaling di C++. Hasil marshaling saat Anda menggunakan konteks hanya valid sampai marshal_context objek dihancurkan. Untuk mempertahankan hasil Anda, Anda harus menyalin data.

Hal yang sama marshal_context dapat digunakan untuk banyak konversi data. Menggunakan kembali konteks dengan cara ini tidak akan memengaruhi hasil dari panggilan marshaling sebelumnya.

Anggota

Konstruktor Publik

Nama Deskripsi
marshal_context::marshal_context Membuat objek yang marshal_context akan digunakan untuk konversi data antara jenis data terkelola dan asli.
marshal_context::~marshal_context Menghancurkan objek marshal_context .

Metode Publik

Nama Deskripsi
marshal_context::marshal_as Melakukan marshaling pada objek data tertentu untuk mengonversinya antara jenis data terkelola dan asli.

Persyaratan

File header:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h>, atau <msclr\marshal_atl.h>

Namespace: msclr::interop

marshal_context::marshal_context

Membuat objek yang marshal_context akan digunakan untuk konversi data antara jenis data terkelola dan asli.

marshal_context();

Keterangan

Beberapa konversi data memerlukan konteks marshal. Untuk informasi selengkapnya tentang terjemahan mana yang memerlukan konteks dan file marshaling mana yang harus Anda sertakan dalam aplikasi Anda, lihat Gambaran Umum marshaling di C++.

Contoh

Lihat contoh untuk marshal_context::marshal_as.

marshal_context::~marshal_context

Menghancurkan objek marshal_context .

~marshal_context();

Keterangan

Beberapa konversi data memerlukan konteks marshal. Lihat Gambaran Umum marshaling di C++ untuk informasi selengkapnya tentang terjemahan mana yang memerlukan konteks dan file marshaling mana yang harus disertakan dalam aplikasi Anda.

Menghapus marshal_context objek akan membatalkan data yang dikonversi oleh konteks tersebut. Jika Anda ingin mempertahankan data setelah marshal_context objek dihancurkan, Anda harus menyalin data secara manual ke variabel yang akan bertahan.

marshal_context::marshal_as

Melakukan marshaling pada objek data tertentu untuk mengonversinya antara jenis data terkelola dan asli.

To_Type marshal_as<To_Type>(
   From_Type input
);

Parameter

input
[di] Nilai yang ingin Anda marshal ke To_Type variabel.

Nilai hasil

Variabel jenis To_Type yang merupakan nilai yang dikonversi dari input.

Keterangan

Fungsi ini melakukan marshaling pada objek data tertentu. Gunakan fungsi ini hanya dengan konversi yang ditunjukkan oleh tabel dalam Gambaran Umum marshaling di C++.

Jika Anda mencoba membuat marshal sepasang jenis data yang tidak didukung, marshal_as akan menghasilkan kesalahan C4996 pada waktu kompilasi. Baca pesan yang disertakan dengan kesalahan ini untuk informasi lebih lanjut. Kesalahan C4996 dapat dihasilkan untuk lebih dari sekadar fungsi yang tidak digunakan lagi. Dua kondisi yang menghasilkan kesalahan ini mencoba melakukan marshal sepasang jenis data yang tidak didukung dan mencoba menggunakan marshal_as untuk konversi yang memerlukan konteks.

Pustaka marshaling terdiri dari beberapa file header. Konversi apa pun hanya memerlukan satu file, tetapi Anda dapat menyertakan file tambahan jika Perlu untuk konversi lain. Tabel dalam Marshaling Overview in C++ menunjukkan file marshaling mana yang harus disertakan untuk setiap konversi.

Contoh

Contoh ini membuat konteks untuk marshaling dari ke System::Stringconst char * jenis variabel. Data yang dikonversi tidak akan valid setelah baris yang menghapus konteks.

// 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;
}