私はバイト配列に別のオブジェクトを変換するためにC++でこのコードの機能を持っている:
C#のような構造組み込み関数で "テンプレートのような型" Tを見ることができるようにするには?
template <typename T>
static void GetBytesArrayFrom(T value, BYTE *out_array)
{
union BytesConverter
{
T value;
BYTE bytes_array[sizeof(T)];
};
BytesConverter bc;
bc.value = value;
memcpy(out_array, bc.bytes_array, sizeof(T));
}
は今、私はC#で同じ機能をしようとしますが、問題を抱えています:
public void GetBytesFrom<T>(T value, byte[] out_array) where T : object
{
struct BytesConverter
{
[FieldOffset(0)]
T value; //T is unknown here
[FieldOffset(0)]
byte[] bytes_array = new byte[sizeof(T)]; //and here
}
int test = 0;
}
と私は構造体内の関数を全く定義することができないようです。
どのようにC#で同じクールな変換機能を行うことができますか?
オブジェクトをバイト[]変換しようとしていますか?シリアライゼーション? – ken2k
あなたは....それは間違っています。 – Mehrdad
@ ken2k、まあまあですが、私はシリアライゼーションについて知っていますが、私はそれが動作する方法が好きではありません。バイナリデータ、アセンブリ情報などにフィールド名を追加します。私は構造体/クラス/型のデータをC++と同じように表すプレーンバイトを必要とします – Kosmos