【发布时间】:2008-11-21 00:45:07
【问题描述】:
努力获取任何时区的日期时间。 我正在使用 DateTimeOffset、一个字符串和一个 XmlElement 属性。当我这样做时,我收到以下错误:
[InvalidOperationException: 'dateTime' 是无效的值 XmlElementAttribute.DataType 属性。 dateTime 无法转换为 System.String.]
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel 模型,字符串 ns,ImportContext 上下文,字符串数据类型, XmlAttributes a,布尔重复, 布尔型 openModel、RecursionLimiter 限制器)+450[InvalidOperationException:有 错误反映类型 'System.String'。]
System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel 模型,字符串 ns,ImportContext 上下文,字符串数据类型, XmlAttributes a,布尔重复, 布尔型 openModel、RecursionLimiter 限制器)+1621
System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(成员映射 访问器,FieldModel 模型, XmlAttributes a, String ns, Type 选择标识符类型,布尔 rpc, 布尔型 openModel、RecursionLimiter 限制器)+8750
System.Xml.Serialization.XmlReflectionImporter.ImportFieldMapping(StructModel 父级,FieldModel 模型, XmlAttributes a, String ns, RecursionLimiter 限制器)+139
System.Xml.Serialization.XmlReflectionImporter.InitializeStructMembers(结构映射 映射,StructModel 模型,布尔值 openModel,字符串类型名称, RecursionLimiter 限制器)+1273[InvalidOperationException:有 反映属性的错误 'creationTimeX'。] ...
代码:
[System.Xml.Serialization.XmlElement(ElementName = "creationTime",
DataType="dateTime")]
public string creationTimeX
{
get
{
return this.creationTimeField.ToString("yyyy-MM-ddTHH:mm:sszzz");
}
set
{
DateTimeOffset.TryParse(value, out this.creationTimeField);
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public System.DateTimeOffset creationTime
{
get {
return this.creationTimeField;
}
set {
this.creationTimeField = value;
}
}
【问题讨论】:
-
仅作记录。当心
DateTimeOffset。使用 WCF 序列化时,序列化DateTimeOffset时出现一些问题。
标签: c# datetime .net-2.0 xml-serialization