元帅字节枚举

Gfo*_*rse 3 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
Run Code Online (Sandbox Code Playgroud)

这给出了错误: Unvalid combination

如果我只是简单地删除<MarshalAs(UnmanagedType.I1)>然后解析工作除了结构的其余部分的索引关闭,给出无效的值.

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

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

Sef*_*efe 5

An Enum具有默认的基础类型Int32.您必须Byte在声明中将其更改为:

Public Enum ManagedCustomEnum As Byte
    Value_1
    Value_2
    Value_3
    Value_4
    Value_etc
End Enum
Run Code Online (Sandbox Code Playgroud)