将字节编组到枚举

Marshal byte to enum

所以我正在使用 Marshal class 将非托管结构解析为托管结构。到目前为止,一切都按预期工作,除了我正在努力如何将非托管 Char 转换为托管枚举类型这一事实。

例如:

<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 文章,但仍然没有运气。

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

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

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