执行这行代码时抛出此异常

retobj = Marshal.PtrToStructure( buffer, anytype );

我不知道是什么导致了这种情况,因为我尝试运行的应用程序在此处的其他开发人员机器上运行良好。
public static object RawDeserialize(byte[] rawdatas, Type anytype)
{
    int rawsize = Marshal.SizeOf(anytype);

    if (rawsize > rawdatas.Length)
    {
        return null;
    }

    IntPtr buffer = Marshal.AllocHGlobal(rawsize);
    object retobj = null;

    try
    {
         Marshal.Copy(rawdatas, 0, buffer, rawsize);
         retobj = Marshal.PtrToStructure(buffer, anytype);
    }
    finally
    {
         Marshal.FreeHGlobal(buffer);
    }

    return retobj;
}

我多次尝试修复 .NET Compact Framework,但似乎没有任何效果,有人知道解决方案吗?

最佳答案

如果您要调试程序,您会发现以下行抛出异常:

 retobj = Marshal.PtrToStructure(buffer, anytype);

主要原因是编码工具不知道如何编码您的类型。这有很多可能的原因,我所知道的最常见的两个是:
  • 结构中的嵌套结构(类型为 anytype)
  • 通过为结构添加前缀来解决


  • 嵌套数组。
  • 通过为数组添加前缀来解决



  • 希望能帮助到你。

    关于c# - System.ExecutionEngineException 被抛出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5260701/

    10-13 06:24