所以我正在使用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文章,但仍然没有运气.
希望有人可以简单地指出我正确的方向.
目前我正在尝试解析一个整数,该整数是来自第三方 API 的枚举的按位组合。例如:我收到一个integer值,1035该值包含三个枚举值;
enum Status
1= "Status 1"
2= "Status 2"
4= "Status 3"
8= "Status 4"
........
1024= "Status 8"
end enum
Run Code Online (Sandbox Code Playgroud)
所以我需要一个将值转换1035为的函数Status 1 + Status 2 + Status 4 + Status 8
尝试将其转换为位,然后使用位移位,但这并没有给我正确的结果...希望有人可以在 C# 或 vb.net 示例中帮助我。