XmlSerializer에서 만든 XML에 기본값이있는 경우 속성을 제외하고 싶습니다. XmlSerializer를 사용하여이 작업을 수행 할 수 있습니까? 아니면 IXmlSerializable을 조사해야합니까?XmlSerializer를 사용하여 해당 값에 따라 속성을 무시할 수있는 방법
예를 들어, 나는 다음과 같은 클래스를 가질 수있다 :
public class PositionedObject
{
public float X
{ get; set; }
public float Y
{ get; set;}
}
나는 그것이 PositionedObject의 인스턴스를 직렬화 할 때 값이 0 인 경우, X를 포함하지 않도록하는 XmlSerializer를 얘기하고 싶습니다 (와 같은 0 인 경우 Y로). 시리얼 라이저는 속성이 직렬화 여부를 결정하는이 메소드를 호출
public bool ShouldSerializeX()
{
return X != 0;
}
:
이 답변은 충분하지 않습니다. 시리얼 라이저가 그러한 방법에 대해 어떻게 알지는 못합니다. 게다가, 이것은 확장 할 수 없습니다. – Amy
@Inuyasha, 너 해봤 니? 나는 그것이 작동한다는 것을 알고, 나는이 솔루션을 여러 번 사용했다. 문서화되어 있지는 않지만 XML serializer 코드를 살펴보면이 메서드가 있으면 호출하는 것을 볼 수 있습니다 (또는 XSpecified라는 읽기 전용 속성을 만들 수도 있습니다). 어쨌든, 더 확장 성있는 방법을 알고 있습니까? –
Inuyasha - 실제로 해봤습니까? 이 답변을 바탕으로 나는 Google에 몇 가지 일을 할 수 있었고 이것이 효과가 있다고 주장하는 여러 가지 기사를 발견했습니다. 나는 지금 시행 중이다. 여기에 몇 가지 추가 정보가 있습니다. http://horacegoescoding.blogspot.com/2009/04/using-shouldserialize-for-conditional.html –