c# - 使用 XmlSerializer 序列化 IntPtr

标签 c# xml-serialization intptr

我想知道为什么 XmlSerializer 实现不支持 IntPtr 类型。当我尝试序列化包含 IntPtr 类型字段的类时,序列化失败,告诉我不支持 IntPtr,并忽略该成员。

为了解决这个问题,我将 IntPtr 值转换为 Int64...但这是一个好主意吗?据我所知,应该是这样。具体来说,我需要序列化一个窗口句柄,在.NET框架中该句柄的类型为IntPtr。我做得对吗?

最佳答案

IntPtr 不可序列化的原因是,当您将其从环境中删除时,它通常根本没有任何意义。

如果序列化窗口句柄,则只有在窗口仍然存在的情况下在同一位置反序列化它才有意义。如果您在不同的计算机上、不同的应用程序中或在窗口被删除后对其进行反序列化,则该句柄没有任何意义。

因此,您可以将其转换为可序列化的类型,但您需要确保它在反序列化时仍然有意义。

关于c# - 使用 XmlSerializer 序列化 IntPtr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472509/

相关文章:

c# - 为什么脚本仅使用渲染器组件为某些对象着色?

c# - 无法在xml中的指定位置插入节点

.net - 防止 XmlSerializer 发出 xsi :type on inherited types

c# - IntPtr 到字节数组并返回

c# - XmlSerializer 抛出 InvalidOperationException

c# - 从程序集中获取所有资源的列表

c# - 方法 'UseRouting' 没有重载需要 1 个参数

xml - 在XML中编码二进制数据:是否有比base64更好的替代方法?

c# - IntPtr 算法

c# - IntPtr 到 string.Format 中的十六进制字符串