2011-10-03 1 views

답변

8

당신은 (그 문제에 대한, 또는 다른 값) null 값을 생략 할 수 Specified 확장 된 속성을 사용하여 객체 여부를 말할 수 있습니다. 기본적으로 부울로 끝에 추가 된 Specified이라는 단어가있는 serialize 된 속성과 같은 이름의 다른 속성을 만듭니다. Specified 속성이 true이면 제어중인 속성이 serialize됩니다. 나는이 오래된 스레드 알고 있지만, 경우에 다른 사람이 찾을

[XmlElement("EndDate")] 
public DateTime? EndDate { get; set; } 
[XmlIgnore] 
public bool EndDateSpecified { get { 
    return (EndDate != null && EndDate.HasValue); } } 
+0

고맙다. – Patrick

+0

둘째, 작동합니다. – MvcCmsJon

+0

매우 영리합니다. 감사! '[XmlElement ("EndDate")]'는 필요합니까? – Deadlykipper

0

MSDN link

를 xml 파일에서 null 값을 떠나지 않고 가지고 할 수있는 방법이

이 당신이 널 (null)에 대해 빈 요소가

+0

사실 'DateTime'이 값 유형이기 때문에 실제로는 작동하지 않습니다. 연결된 문서에서 "** 또한 nullable 값 형식에 대해이 속성을 false로 설정할 수 없습니다. 이러한 형식이 null 참조 (Visual Basic의 경우 Nothing)이면 xsi : nil을 true로 설정하여 serialize됩니다. * * " – mellamokb

+0

좋은 지적으로, 나는 그가 DateTime을 다루고 있다는 사실을 놓쳤다. 이것을 가리 키기위한 thansk는 – Pharabus

0

:

또한 구현할 수를이 false 경우 그렇지 않으면, 다른 속성은 완전히 XML 파일에서 제외됩니다 각 속성에 대해 serialize해야하는지 여부를 확인하는 public 메서드입니다. 협약은 다음과 같습니다 귀하의 경우 예를 들어

bool ShouldSerialize[YourPropertyName](); 

,

public bool ShouldSerializeEndDate(){ 
    return (EndDate != null && EndDate.HasValue); 
} 

당신이 직렬화를 선택적으로 할 각 속성에 대해이 작업을 수행합니다.