Serialization 如何使用Compact Framework对对象进行二进制序列化?
我有一个目标Serialization 如何使用Compact Framework对对象进行二进制序列化?,serialization,compact-framework,Serialization,Compact Framework,我有一个目标 struct _NETINFO { } 我想使用Compact Framework将其转换为Byte[],我尝试了以下方法但没有成功: _NETINFO info = new _NETINFO(); byte[] buffer = (byte[])info; 但它不起作用!我发现的唯一其他建议是使用CF中没有的BinaryFormatter 还有其他建议吗?结构有多复杂?对于没有指向其他内容的指针的简单事情,这非常简单: var info = new _NETINFO(
struct _NETINFO { }
我想使用Compact Framework将其转换为Byte[],我尝试了以下方法但没有成功:
_NETINFO info = new _NETINFO();
byte[] buffer = (byte[])info;
但它不起作用!我发现的唯一其他建议是使用CF中没有的BinaryFormatter
还有其他建议吗?结构有多复杂?对于没有指向其他内容的指针的简单事情,这非常简单:
var info = new _NETINFO();
var buffer = new byte[Marshal.SizeOf(info)];
var handle = GCHandle.Alloc(info, GCHandleType.Pinned);
try
{
Marshal.Copy(handle.AddrOfPinnedObject(), buffer, 0, buffer.Length);
}
finally
{
handle.Free();
}
还有一个版本使用了更短的不安全代码,但需要打开“允许不安全代码”,并且出于某种原因,这会让一些人感到恐慌
希望托管代码可以在不复制(或反向转换字节数组到结构)的情况下执行此操作,但遗憾的是,它不允许。从完整框架中提取BinaryFormatter类如何?您可能会发现这很有用:,或者这:,或者这: