클래스를 직렬화 할 수 있습니다. 속성 중 하나는 int이며, 필드에 값이 제공되지 않으면 태그는 여전히 존재하지만 0 값을 갖습니다. 왜냐하면 int는 null로 지정할 수 없기 때문입니다.C# XML serialization int 태그 값이 제공되지 않았습니다.
내가 가진 문제는 XML을 받기를 원하는 클라이언트가 값이 제공되지 않은 경우 태그를 전혀보고 싶지 않다는 것입니다. 그들은 0 값을 가진 태그를보고 싶지 않습니다.
아이디어가 있으십니까?
public int? Foo { get; set; }
또한 개체의 API에서이 작업을 숨길 수 있습니다 : 당신이 그것을 null
이 때 억제 할 것 int?
을하면
이 접근법의 유일한 문제점은'0' *이 유효한 int이므로, 많은 경우에 유효한 값이 억제됩니다. 값이 합법적으로 0이 아니라면 괜찮습니다. –
네가 맞아, 나는 그것을 고려하지 않았다. 이 문제에 대한 일반적인 해결책으로서 확실히 단점입니다. 그러나 ShouldSerializeValue 메서드가있는 사용자 지정 PropertyDescriptor를 사용하여 솔루션을 적용 할 수는 있지만 추가 속성은 필요하지 않습니다. –