我想知道为什么 XmlSerializer 实现不支持 IntPtr 类型。当我尝试序列化包含 IntPtr 类型字段的类时,序列化失败,告诉我不支持 IntPtr,并忽略该成员。
为了解决这个问题,我将 IntPtr 值转换为 Int64...但这是一个好主意吗?据我所知,应该是这样。具体来说,我需要序列化一个窗口句柄,在.NET框架中该句柄的类型为IntPtr。我做得对吗?
最佳答案
IntPtr 不可序列化的原因是,当您将其从环境中删除时,它通常根本没有任何意义。
如果序列化窗口句柄,则只有在窗口仍然存在的情况下在同一位置反序列化它才有意义。如果您在不同的计算机上、不同的应用程序中或在窗口被删除后对其进行反序列化,则该句柄没有任何意义。
因此,您可以将其转换为可序列化的类型,但您需要确保它在反序列化时仍然有意义。
关于c# - 使用 XmlSerializer 序列化 IntPtr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472509/