异常信息---“指定的数组不属于需要的类型”,请问什么意思。。

解决方案 »

  1.   

     public static byte[] rawSerialize(object obj) 
            {
                int rawsize = Marshal.SizeOf(obj); 
                IntPtr buffer = Marshal.AllocHGlobal(rawsize);
                byte[] rawdatas = new byte[rawsize];            try
                {
                    Marshal.StructureToPtr(obj, buffer, false);
                    Marshal.Copy(buffer, rawdatas, 0, rawsize);                    
                }
                catch (Exception ex)
                {
                    ex.ToString();
                }
                finally
                {
                    // Free the unmanaged memory.
                    Marshal.FreeHGlobal(buffer); 
                }            return   rawdatas; 
            }
      

  2.   

    经过测试,发现我的结构体中有char数组,如果把数组注释掉,就没问题了,不知道什么原因
      

  3.   

    你要先确定char数组的大小,然后才能用这个。在数组前一行加上
    [MarshalAs(UnmanagedType.ByValArray , SizeConst = 大小)]