繁体   English   中英

如何在C#中自定义PointF对象的序列化

[英]How to customize serialization of a PointF objectin c#

我有一个序列化和反序列化复杂对象的项目。 它工作正常,除了该对象图中的一些PointF对象。 可以说我有这一点:X:109.33 Y:200

每个点都将使用其十进制分隔符进行序列化(如果需要)(在巴西为','),因此将为:109,33和200。问题是该点还使用','char分隔了两个值,因此PointF序列化为:

pointProp="109,33,200"

您可以在那里看到问题。 当我反序列化时,我会得到这一点(X:109,Y:33)。

我考虑了两种解决方案,但我不知道如何实现这两种解决方案。 首先是将分隔符更改为其他字符,例如'|',以便将其序列化为:pointProp =“ 109,33 | 200”

第二种解决方案是强制序列化使用点('。')作为十进制分隔符。 为此,我不得不序列化以考虑美国文化而不是Br文化,因此它将像这样进行序列化:

pointProp="109.33,200"

关于如何实现上述目标的任何技巧?


抱歉,忽略该问题,只是意识到我的问题有所不同。 我的Container对象实际上在我的PointF属性上具有XMlIgnore并进行自己的序列化。 在这种情况下,我只需要编辑此方法。 不管怎么说,还是要谢谢你。

您没有指定如何序列化/反序列化这些对象,但是我确定您应该在此过程中使用CultureInfo.InvariantCulture以避免此类问题。 最终更改小数点分隔符:

System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";

System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM