反序列化为TimeSpan时需要duration元素

时间:2017-01-24 16:53:54

标签: c# xml deserialization timespan

这是我关于堆栈溢出的第一个问题。所以我为我身边的任何不法行为道歉!

我必须反序列化一些XML,其中一个元素是必需的,数据类型为xs:duration。如何为可选元素执行此操作可以在http://kennethxu.blogspot.nl/2008/09/xmlserializer-doesn-serialize-timespan.html找到,我曾经构建过:

public class ValueWeightTime
{
    private TimeSpan _value = new TimeSpan();

    [XmlIgnore]
    public TimeSpan Value { get { return _value; } set { _value = value; } }

    [Required] //ToDo: fix default value PT0S
    [XmlElement(ElementName = "Value", DataType = "duration")]
    public string XmlValue
    {
        get { return XmlConvert.ToString(_value); }
        set { _value = XmlConvert.ToTimeSpan(value); }
    }
}

必需属性不起作用。有人知道如何制作“价值”元素吗?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找:

[DataMember(IsRequired = true)]

如果这不起作用,你可以这样做:

[XmlIgnore]
public TimeSpan Value 
{ 
    get 
    { 
        if(String.IsNullOrEmpty(XmlValue))
            throw new AgrumentException("Value is required.");
        return _value; 
    }
    set { _value = value; }
}