元帅字节枚举

时间:2017-11-01 08:26:33

标签: c++ vb.net enums marshalling

因此,我使用Marshal类将非托管结构解析为托管结构。到目前为止,一切都按预期工作,除了我正在努力如何将非托管字符转换为托管枚举类型。

例如:

<StructLayout(LayoutKind.Sequential, Pack:=1)>
Public Structure UnamangedToManaged
     <MarshalAs(UnmanagedType.I1)>
     Public _Enum As ManagedCustomEnum
end structure


Public Enum ManagedCustomEnum
    Value_1
    Value_2
    Value_3
    Value_4
    Value_etc
End Enum

这会出错:Unvalid combination

如果我只是删除<MarshalAs(UnmanagedType.I1)>,那么除了结构的其余部分的索引关闭外,解析工作正常,给出无效的值。

尝试了很多可能性并且还阅读了所有MSDN文章,但仍然没有运气。

希望有人可以简单地指出我正确的方向。

1 个答案:

答案 0 :(得分:5)

Enum的默认基础类型为Int32。您必须在声明中将其更改为Byte

Public Enum ManagedCustomEnum As Byte
    Value_1
    Value_2
    Value_3
    Value_4
    Value_etc
End Enum