无法封送类型为“InputFrameStruct”的字段“data”:无效的托管/非托管类型组合到嵌套结构中

时间:2021-07-20 07:04:09

标签: c# struct byte

我有一个结构

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct InputFrameStruct
{
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
    public string type;
    [MarshalAs(UnmanagedType.LPStruct, SizeConst = 532)]
    public InputFrameDataStruct data;
}

[StructLayout(LayoutKind.Explicit)]
public struct InputFrameDataStruct
{
    [FieldOffset(0)] public char[] dataChar;
    //[FieldOffset(0)] public byte[] dataByte;
}

以及将字节数组转换为结构体的方法

 public static T ByteToStruct<T>(byte[] rawData) where T : struct
    {
        GCHandle pinnedRawData = GCHandle.Alloc(rawData, GCHandleType.Pinned);
        try
        {
            var pinnedRawDataPtr = pinnedRawData.AddrOfPinnedObject();
            return Marshal.PtrToStructure<T>(pinnedRawDataPtr);
        }
        finally
        {
            pinnedRawData.Free();
        }
    }

但是在 ByteToStruct 方法中转换时出现错误 “无法封送‘InputFrameStruct’类型的字段‘data’:无效的托管/非托管类型组合(此值类型必须与 Struct 配对”

0 个答案:

没有答案
相关问题