正在为任何时区获取日期时间。
我正在使用DateTimeOffset、一个字符串和一个XmlElement属性。当我这样做时,我得到以下错误:
[InvalidOperationException:'日期时间'
对于
XmlElementAttribute.DataType属性。
日期时间不能转换为
system.string.]
system.xml.serialization.xmlReflectionImporter.importTypeMapping(类型模型
模型,字符串ns,importContext
上下文,字符串数据类型,
xmltattributes,布尔重复,
布尔openmodel,递归限制器
限制器)+450
[无效操作异常:存在
错误反射类型
“system.string”。]
system.xml.serialization.xmlReflectionImporter.importTypeMapping(类型模型
模型,字符串ns,importContext
上下文,字符串数据类型,
xmltattributes,布尔重复,
布尔openmodel,递归限制器
限制器)+1621
system.xml.serialization.xmlReflectionImporter.ImportAccessOrmapping(成员映射
访问器,fieldmodel模型,
xmltattributes a,字符串ns,类型
choiceIdentifierType,布尔rpc,
布尔openmodel,递归限制器
限制器)+8750
system.xml.serialization.xmlReflectionImporter.importFieldMapping(结构模型
父级,fieldmodel模型,
xmltattributes a,字符串ns,
递归限制器+139
system.xml.serialization.xmlReflectionImporter.InitializeStructMembers(结构映射
映射,结构模型,布尔
openmodel,字符串类型名,
递归限制器+1273
[无效操作异常:存在
反射性错误
“创建时间”。]…
代码:

 [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;
    }
}

最佳答案

看看这个关于序列化日期和UTC的StackOverflow问题:
Best practices for DateTime serialization in .Net framework 3.5/SQL Server 2008
不需要创建特殊属性就可以完成序列化。

10-06 14:46