如何序列化DateTimeFormatInfo类型的对象

本文关键字:对象 类型 DateTimeFormatInfo 序列化 | 更新日期: 2023-09-27 17:58:11

我想序列化DatetimeFormatInfo类型的对象。

我尝试了以下代码:

DateTimeFormatInfo dateTimeFormat = new DateTimeFormatInfo();
dateTimeFormat.ShortDatePattern = "dd-MMM-yy";
xs = new XmlSerializer(dateTimeFormat.GetType());
StreamWriter sw = new StreamWriter("Setting.xml");
xs.Serialize(sw, dateTimeFormat);

但它抛出了以下异常。

未处理System.InvalidOperationException
生成XML文档时出错
类型System.Globalization.GregorianCalendar不应为
使用XmlIncludeSoapInclude属性可以指定静态未知的类型。

序列化DateTimeFormatInfo需要添加什么吗?

如何序列化DateTimeFormatInfo类型的对象

您需要在XmlSerializer中包括要序列化的附加对象类型的列表。在您的情况下,您需要添加对象类型System.Globalization.GregorianCalendar

        System.Globalization.DateTimeFormatInfo dateTimeFormat = new System.Globalization.DateTimeFormatInfo();
        dateTimeFormat.ShortDatePattern = "dd-MMM-yy";
        // Add here all the extra types you need to serialize
        Type[] extraTypes = new Type[] { typeof(System.Globalization.GregorianCalendar) };
        System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(dateTimeFormat.GetType(), extraTypes);
        System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:'testso.xml");
        xs.Serialize(sw, dateTimeFormat);