У меня есть эта функция кода в C ++ для преобразования различных объектов в массив байтов:
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 #?