作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题是 How to serialize a TimeSpan to XML 的延续
我有很多 DTO 对象通过 TimeSpan
周围的实例。使用原始帖子中描述的 hack 有效,但它要求我在每个 DTO 中为每个 TimeSpan
重复相同的大量代码。属性(property)。
所以,我带来了以下包装类,它是 XML 可序列化的就好了:
#if !SILVERLIGHT
[Serializable]
#endif
[DataContract]
public class TimeSpanWrapper
{
[DataMember(Order = 1)]
[XmlIgnore]
public TimeSpan Value { get; set; }
public static implicit operator TimeSpan?(TimeSpanWrapper o)
{
return o == null ? default(TimeSpan?) : o.Value;
}
public static implicit operator TimeSpanWrapper(TimeSpan? o)
{
return o == null ? null : new TimeSpanWrapper { Value = o.Value };
}
public static implicit operator TimeSpan(TimeSpanWrapper o)
{
return o == null ? default(TimeSpan) : o.Value;
}
public static implicit operator TimeSpanWrapper(TimeSpan o)
{
return o == default(TimeSpan) ? null : new TimeSpanWrapper { Value = o };
}
[JsonIgnore]
[XmlElement("Value")]
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
public long ValueMilliSeconds
{
get { return Value.Ticks / 10000; }
set { Value = new TimeSpan(value * 10000); }
}
}
<Duration>
<Value>20000</Value>
</Duration>
<Duration>20000</Duration>
最佳答案
更改 [XmlElement("Value")]
至 [XmlText]
.然后,如果你序列化这样的东西:
[Serializable]
public class TestEntity
{
public string Name { get; set; }
public TimeSpanWrapper Time { get; set; }
}
<TestEntity>
<Name>Hello</Name>
<Time>3723000</Time>
</TestEntity>
关于.NET 如何将 TimeSpan 序列化为 XML(不是同一个问题!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7483233/
我是一名优秀的程序员,十分优秀!