如何在c#

时间:2017-01-10 13:24:13

标签: c# .net serialization

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

如果需要,每个点都会用小数点分隔符序列化(','在巴西),所以它将是:109,33和200.问题是该点也使用&# 39;,' char将两个值分开,因此PointF序列化将为:

pointProp="109,33,200"

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

我想到了两个解决方案,但我不知道如何实现它们。 首先是将分隔符更改为不同的字符,例如' |',因此它将被序列化为:     pointProp =" 109,33 | 200"

第二种解决方案是强制序列化使用点('。')作为小数分隔符。为此,我会强制序列化来考虑我们的文化,而不是Br文化,所以它将被序列化:

pointProp="109.33,200"

关于如何实现这一目标的任何提示?

对不起,伙计们,忽略这个问题,刚刚意识到我的问题不同了。 My Container对象实际上在我的PointF属性上有一个XMlIgnore,并自己进行序列化。在这种情况下,我只需编辑此方法。不管怎样,谢谢。

1 个答案:

答案 0 :(得分:0)

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

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

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