2010-06-03 3 views
3

많은 속성이있는 개체를 xml-serialize하고 DateTime 형식의 두 속성이 있습니다. 직렬화 된 출력의 날짜 형식을 지정하고 싶습니다. IXmlSerializable 인터페이스를 구현하고 모든 속성의 직렬화를 덮어 쓰고 싶지 않습니다. 이것을 달성 할 다른 방법이 있습니까?C# (2.0)에서 개체 직렬화시 날짜 서식 지정

감사 (전 C#, .NET 2를 사용하고 있습니다).

답변

5

XML 직렬화를 들어 당신은 IXmlSerializable하지 ISerializable을 구현해야합니다.

그러나 도우미 속성을 사용하고 DateTime 속성을 XmlIgnore 특성으로 표시하여이 문제를 해결할 수 있습니다.

public class Foo 
{ 
    [XmlIgnore] 
    public DateTime Bar { get; set; } 

    public string BarFormatted 
    { 
     get { return this.Bar.ToString("dd-MM-yyyy"); } 
     set { this.Bar = DateTime.ParseExact(value, "dd-MM-yyyy", null); } 
    } 
} 
+0

예, IXmlSerializable입니다. 러시로 입력하는 중 ... - 수정되었습니다. 감사. – Zoman

1

메서드를 재정의하는 DateTime에 래퍼 클래스/구조체를 사용할 수 있습니다.

public struct CustomDateTime 
{ 
    private readonly DateTime _date; 

    public CustomDateTime(DateTime date) 
    { 
     _date = date; 
    } 

    public override string ToString() 
    { 
     return _date.ToString("custom format"); 
    } 
}