Я пытаюсь сделать небольшой «memcpy» взломать C#. Я постоянно застревать на этой части, потому что она не будет преобразовывать System.Type в байт *Получить тип объекта, а затем бросить его?
public unsafe void memcpy(byte* dest, object src, int length)
{
byte* nsrc;
byte* ndst;
nsrc = (byte*)((src.GetType())src);
}
Как вы видите, я стараюсь, чтобы получить тип объекта, а затем привести его к исходному объекту.
Любые идеи?
Обновление:
Возможно использование сериализации?
private byte[] ObjectToByteArray(Object obj)
{
if(obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
private void memcpy(byte[] dest, int pos, object src, int len)
{
byte[] ba = ObjectToByteArray(src);
Array.Copy(ObjectToByteArray(src), 0, dest, pos, len);
}
Что бы вам было хорошего? Бросок полезен только тогда, когда вы знаете тип во время компиляции ... В любом случае, чего вы пытаетесь достичь? Что вы ожидаете от типа src? –
C# не C/C++ вы не можете просто бросать вещи волей-неволей. Это типичный язык, ссылка не может быть указана на указатель. – Mgetz
Я предполагаю, что это то, что вы пытаетесь сделать: http://stackoverflow.com/questions/14141172/getting-a-byte-array-from-a-pinned-object – Douglas