ワイヤ形式のパケットを表す構造があります。この構造体には、他の構造体の配列があります。ほとんどのケースでこれを非常にうまく処理する汎用コードがありますが、この構造体の配列のケースはループのマーシャラーをスローしています。
配列を持つ構造体へのポインターを取得できないため、アンセーフ コードは使用できません (ぐーん!)。
このコードプロジェクトの記事から、次のような C++/CLI を含む非常に優れた一般的なアプローチがあることがわかります...
public ref class Reader abstract sealed
{
public:
generic <typename T> where T : value class
static T Read(array<System::Byte>^ data)
{
T value;
pin_ptr<System::Byte> src = &data[0];
pin_ptr<T> dst = &value;
memcpy((void*)dst, (void*)src,
/*System::Runtime::InteropServices::Marshal::SizeOf(T::typeid)*/
sizeof(T));
return value;
}
};
今、構造があれば -> バイト配列 / ライターのバージョンが設定されます! 前もって感謝します!