博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于XML序列化与CultureInfo
阅读量:4701 次
发布时间:2019-06-09

本文共 1813 字,大约阅读时间需要 6 分钟。

  不同的计算机系统可能有着不同的CultureInfo,例如在中文环境下日期通常这样显示03/30/2016,而在有的操作系统下它可能是这样的30.3.2016。

  这样的话带来一个问题,例如在中文环境下序列化了一个日期类,那么到了非中文环境下是否还能反序列回来呢?

 

 

 

     其实这是不用担心的,C#中XML序列化是与CultureInfo无关的。我提出这一观点有两点理由:

 

  1.https://social.msdn.microsoft.com/Forums/windowsdesktop/zh-CN/0df9998e-8bee-4eed-93dd-fe627509b215/xmlserializerthreadculture

  其中有人回答了 原文在这里

  http://weblogs.asp.net/psteele/xmlserializer-ignores-culture

  大意就是有个higher(可能是牛B的)的人回答了xmlserializer-ignores-culture

 

  2.自己测试,上测试程序。

1  public class TestClass 2     { 3         public DateTime time; 4     } 5     class Program 6     { 7         static void Main(string[] args) 8         { 9             TestClass MyClass = new TestClass();10             MyClass.time = new DateTime(2005, 1, 12);11             //var currentCulture = CultureInfo.CurrentCulture;12             var currentCulture = Thread.CurrentThread.CurrentCulture;13             Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;     14             XmlSerializer serializer = new XmlSerializer(typeof(TestClass));15             16             serializer.Serialize(Console.Out, MyClass);17 18             Console.WriteLine(MyClass.time.ToShortDateString());19 20             CultureInfo cul = CultureInfo.GetCultureInfo("de-de");21             //MyClass.time = new DateTime(2005,1,12);22             Thread.CurrentThread.CurrentCulture = cul;23             serializer.Serialize(Console.Out, MyClass);24             Console.WriteLine(MyClass.time.ToShortDateString());25             Console.Read();26 27         }28     }
View Code

  测试在不同的culture中序列化时间,可以发现序列化的结果是一致的,ConsoleWrite的结果是不一致的。

 

  So,放心使用XML序列化。

 

 

题外话:有时候系统中的类无法序列化,不知伙伴们如何解决。我采用了如下的方法

       http://blog.163.com/very_apple/blog/static/27759236201463035249202/

  采用反射获得。

  大家还有什么好方法 说出来分享一下啦~

转载于:https://www.cnblogs.com/ppzbty/p/5335777.html

你可能感兴趣的文章
欧拉定理证明&阶乘的逆元
查看>>
Prime Game Gym - 101981J(网络流/二分图)
查看>>
Teamwork Gym - 101492E (dp)
查看>>
No Link, Cut Tree! Gym - 101484F(dp)
查看>>
Coprimes Gym - 101492C(bitset)
查看>>
Partial Tree UVALive - 7190(完全背包)
查看>>
『深度应用』NLP机器翻译深度学习实战课程·零(基础概念)
查看>>
『开发技术』Windows极简安装使用face_recognition实现人脸识别
查看>>
『深度应用』NLP命名实体识别(NER)开源实战教程
查看>>
『开发技术』GPU训练加速原理(附KerasGPU训练技巧)
查看>>
『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)
查看>>
『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)
查看>>
『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
查看>>
『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程
查看>>
sql server 2008 自动备份
查看>>
sqlalchemy根据数据库结构生成映射的实体
查看>>
环形数组的组最大字数组求法
查看>>
SQL命令建表
查看>>
图片上传预览 支持html5的浏览器
查看>>
开源框架收集
查看>>