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