내 문제는 내가 주위 TimeSpan
인스턴스를 통과 많은 DTO 개체가 How to serialize a TimeSpan to XML.NET (안 같은 질문을!)
의 연속이다. 원래 게시물에 설명 된 해킹을 사용하면 작동하지만, 각 TimeSpan
속성에 대해 각각의 모든 DTO에서 동일한 코드 대량을 반복해야합니다.
그래서, 난 잘 직렬화 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); }
}
}
문제는 XML은 모양과 같이 생산한다는 것입니다 : 대신의
<Duration>
<Value>20000</Value>
</Duration>
천연
<Duration>20000</Duration>
내 질문은 "케이크를 먹어서 전체로 먹을 수 있습니까? 동일한 반복적 인 코드로 모든 DTO를 어지럽히 지 않고 자연스럽게 보이는 XML을 가지고 설명 된 해킹을 즐기십시오.
감사합니다.