我正在尝试将大小为1的字节数组转换为枚举:
public enum InformationMessageLevel : byte
{
Information = 0,
Warning = 1,
Error = 2,
Fatal = 3
}
使用编组:
// bytes = byte[1] = 0
// t is typeof(InformationMessageLevel)
unsafe
{
fixed (byte* p = bytes)
{
var localPtr = p;
return Marshal.PtrToStructure((IntPtr)localPtr, t);
}
}
但是我得到了错误:
“指定的结构必须是可漂白的或具有布局 信息。\ r \ n参数名称:结构“
我使用与 IntPtr 进行封送处理的原因是,该方法用于将数据动态反序列化为不同类型的属性。
答案 0 :(得分:1)
不使用封送处理的动态解决方案:
byte[] bytes = { 0 };
var t = typeof(InformationMessageLevel);
var result = Enum.ToObject(t, bytes[0]);
Console.WriteLine(result);
输出:
Information