对于具有自定义大小

时间:2016-07-25 21:01:36

标签: .net struct enums marshalling

我有一个我正在尝试Marshal的结构,其定义如下:

enum BBB {BB1 =1, BB2 =2}

  [StructLayout(LayoutKind.Sequential, Pack = 1)]
  struct Foo 
  {
     [MarshalAs(UnmanagedType.I2)]
     public BBB F1;
     public int F2;
     public short F3;
  }

似乎Marshal无法处理此枚举字段规范并抛出异常: 无法作为非托管结构进行整理;没有有意义的大小或偏移量可以计算。 如果我删除[MarshalAs(UnmanagedType.I2)],那么编组成功,但我希望能够将枚举字段编组为自定义大小字段,不一定是4字节字段。

有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

您应该将枚举声明为ushort

enum BBB : ushort {BB1 = 1, BB2 = 2}