marshal_context Sınıfı
Bu sınıf verileri yerel ve yönetilen ortamlar arasında dönüştürür.
Sözdizimi
class marshal_context
Açıklamalar
marshal_context
Bağlam gerektiren veri dönüştürmeleri için sınıfını kullanın. Hangi dönüştürmelerin bağlam gerektirdiği ve hangi hazırlama dosyasının dahil edilmesi gerektiğini hakkında daha fazla bilgi için bkz . C++'da sıralamaya genel bakış. Bağlam kullandığınızda sıralamanın sonucu yalnızca nesne yok edilene marshal_context
kadar geçerlidir. Sonucu korumak için verileri kopyalamanız gerekir.
marshal_context
Aynı şey çok sayıda veri dönüştürmesi için de kullanılabilir. Bağlamın bu şekilde yeniden kullanılmaya başlanması, önceki sıralama çağrılarının sonuçlarını etkilemez.
Üyeler
Ortak oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
marshal_context::marshal_context | Yönetilen ve yerel veri türleri arasında veri dönüştürme için kullanılacak bir marshal_context nesne oluşturur. |
marshal_context::~marshal_context | Bir marshal_context nesneyi yok eder. |
Genel yöntemler
Veri Akışı Adı | Açıklama |
---|---|
marshal_context::marshal_as | Yönetilen ve yerel veri türü arasında dönüştürmek için belirli bir veri nesnesi üzerinde sıralama gerçekleştirir. |
Gereksinimler
Üst bilgi dosyası:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> veya <msclr\marshal_atl.h>
Ad alanı: msclr::interop
marshal_context::marshal_context
Yönetilen ve yerel veri türleri arasında veri dönüştürme için kullanılacak bir marshal_context
nesne oluşturur.
marshal_context();
Açıklamalar
Bazı veri dönüştürmeleri için hazırlama bağlamı gerekir. Hangi çevirilerin bağlam gerektirdiği ve uygulamanıza hangi hazırlama dosyasını eklemeniz gerektiği hakkında daha fazla bilgi için bkz . C++'da sıralamaya genel bakış.
Örnek
marshal_context::marshal_as örneğine bakın.
marshal_context::~marshal_context
Bir marshal_context
nesneyi yok eder.
~marshal_context();
Açıklamalar
Bazı veri dönüştürmeleri için hazırlama bağlamı gerekir. Hangi çevirilerin bağlam gerektirdiği ve uygulamanıza hangi sıralama dosyasının eklenmesi gerektiğini öğrenmek için bkz . C++ dilinde sıralamaya genel bakış.
Bir marshal_context
nesne silindiğinde, bu bağlam tarafından dönüştürülen veriler geçersiz kılınacaktır. Bir marshal_context
nesne yok edildikten sonra verilerinizi korumak istiyorsanız, verileri kalıcı olacak bir değişkene el ile kopyalamanız gerekir.
marshal_context::marshal_as
Yönetilen ve yerel veri türü arasında dönüştürmek için belirli bir veri nesnesi üzerinde sıralama gerçekleştirir.
To_Type marshal_as<To_Type>(
From_Type input
);
Parametreler
girdi
[in] Bir To_Type
değişkene sıralamak istediğiniz değer.
Dönüş değeri
türündeki To_Type
bir değişken, dönüştürülen değeridir input
.
Açıklamalar
Bu işlev, belirli bir veri nesnesi üzerinde sıralama gerçekleştirir. Bu işlevi yalnızca C++'da sıralamaya genel bakış bölümünde tablo tarafından belirtilen dönüştürmelerle kullanın.
Desteklenmeyen bir veri türü çiftini hazırlamaya çalışırsanız derleme marshal_as
zamanında C4996 hatası oluşturur. Daha fazla bilgi için bu hatayla birlikte verilen iletiyi okuyun. Hata C4996
, kullanım dışı bırakılan işlevlerden daha fazlası için oluşturulabilir. Bu hatayı oluşturan iki koşul, desteklenmeyen bir veri türü çiftini hazırlamaya çalışıyor ve bağlam gerektiren bir dönüştürme için kullanmaya marshal_as
çalışıyor.
Hazırlama kitaplığı çeşitli üst bilgi dosyalarından oluşur. Herhangi bir dönüştürme yalnızca bir dosya gerektirir, ancak diğer dönüştürmeler için gerekirse ek dosyalar ekleyebilirsiniz. içindeki Marshaling Overview in C++
tablo, her dönüştürme için hangi hazırlama dosyasının dahil edilmesi gerektiğini gösterir.
Örnek
Bu örnek, bir değişken türünden System::String
sıralamaya yönelik bir const char *
bağlam oluşturur. Dönüştürülen veriler, bağlamı silen satırdan sonra geçerli olmaz.
// 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;
}