C# でちょっとした "memcpy" ハックをしようとしています。System.Type を byte* に変換しないため、この部分に行き詰まります。
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);
}