0

我想序列化 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 吗?

4

1 回答 1

0

您需要在XmlSerializer要序列化的成瘾对象类型列表中包含。在您的情况下,您需要添加 object type 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);
于 2014-05-08T12:33:32.210 回答