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类如何?您可能会发现这很有用:,或者这:,或者这: