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::String
const 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;
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk