用托管c++怎么将结构体或对象中的成员拷贝到数组

用托管c++如何将结构体或对象中的成员拷贝到数组?
本地C或C++可以用指针将一个结构体变量拷贝到数组中。例如
struct tmp
{
   char a1;
   char a2;
   int a3
}
想把这个结构的成员拷贝到数组中可以用memcpy
那在托管C++中应该怎么做?
如果有一个类
public value class tmp
{
public:
   char a1;
   char a2;
   int a3;
};
我想把tmp类的对象的成员a1,a2,a3拷贝到一个数组中如array<unsigned char>^arrTmp中应该怎么做呢?
难道要一个一个移位赋值吗?
求解答!!
------最佳解决方案--------------------
序列化 
反序列化
------其他解决方案--------------------
Marshal::StructToPtr
------其他解决方案--------------------
这个是从托管对象封送到非托管内存的。我的操作都是在托管c++下进行的,是从托管对象复制到数组的,应该怎么做?
------其他解决方案--------------------
marshal.copy

------其他解决方案--------------------
这个还是托管数据和非托管数据的拷贝,我希望都是在托管C++下的拷贝。
难道要先拷贝到非托管在拷贝回来?