public struct stSendrd
    {
       
        public int Common          ;
        //命令行参数,对应相应执行动作的数字
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
        public char[] strParam ;
       
               
        bool boolParam      ;
     }
public byte[] Struct2Bytes(object obj)
    {
        int size = Marshal.SizeOf(obj);
        byte[] bytes = new byte[size];
        
            IntPtr ptr = Marshal.AllocHGlobal(size);
            Marshal.StructureToPtr(obj, ptr, false);
            Marshal.Copy(ptr, bytes, 0, size);
            Marshal.FreeHGlobal(ptr);
            return bytes;
        
              
    } 
Sendrd.Common=1
Sendrd.strParam ="test".ToCharArray();
udp.SendMessage(Struct2Bytes(Sendrd));
异常详细信息: System.ArgumentException: 未能封送类型,因为嵌入数组实例的长度与布局中声明的长度不匹配。源错误:行 117:        
行 118:            IntPtr ptr = Marshal.AllocHGlobal(size);
行 119:            Marshal.StructureToPtr(obj, ptr, false);//这里出错
行 120:            Marshal.Copy(ptr, bytes, 0, size);
行 121:            Marshal.FreeHGlobal(ptr);请高手帮忙解决啊,谢谢!!