C# 如何在c语言中将xml日期值序列化为DateTime类#

C# 如何在c语言中将xml日期值序列化为DateTime类#,c#,xml,C#,Xml,我正在传递以下xml <PolicyNumber>6456365A1</PolicyNumber> <EffectiveDate>2015-10-01T00:00:00</EffectiveDate> <ExpirationDate>2016-10-01T00:00:00</ExpirationDate> 策略号的值按预期传递。DateTime的值没有传递,而是有其默认值。我使用fiddler将其发布到WebAPI mvc

我正在传递以下xml

<PolicyNumber>6456365A1</PolicyNumber>
<EffectiveDate>2015-10-01T00:00:00</EffectiveDate>
<ExpirationDate>2016-10-01T00:00:00</ExpirationDate>
策略号的值按预期传递。DateTime的值没有传递,而是有其默认值。我使用fiddler将其发布到WebAPI mvc


您只需将其设置为仅用于序列化的私有成员即可

[DataContract]
public class AutoIDCardParameter
{
    [DataMember(Name = "PolicyNumber")]
    public string PolicyNumber;

    [DataMember(Name = "EffectiveDate")]
    private string _EffectiveDate {
        get {
            return EffectiveDate.ToString("yyyy-MM-DDTHH:mm:ss");
        }
        set {
            DateTime.TryParse(value, out EffectiveDate);
        }
    }

    public DateTime EffectiveDate;

    // ....
}

这里的顺序不对
DataContractSerializer
将使用字母顺序,除非您另有指定(请参阅),因此它需要
EffectiveDate
ExpirationDate
,然后是
PolicyNumber

您需要按照该顺序重新排列XML,或者需要通过属性指定类的顺序:

[DataContract]
public class Parameter
{
    [DataMember(Order = 0)]
    public string PolicyNumber { get; set; }
    [DataMember(Order = 1)]
    public DateTime EffectiveDate { get; set; }
    [DataMember(Order = 2)]
    public DateTime ExpirationDate { get; set; }
}

你能给我们看一下反序列化代码吗?还有,为什么不在生效日期添加
DataMember
属性?
ExpirationDate
有效吗?您没有有效的xml文件。XML必须有标识行,并且只有一个根标记。在反序列化之前,您需要使用标识行和根选项卡包装接收的xml数据。过期日期也不起作用。我忘记了数据成员名称。
[DataContract]
public class Parameter
{
    [DataMember(Order = 0)]
    public string PolicyNumber { get; set; }
    [DataMember(Order = 1)]
    public DateTime EffectiveDate { get; set; }
    [DataMember(Order = 2)]
    public DateTime ExpirationDate { get; set; }
}