I am using the new .NET 3.0 DataContractSerializer. I have both Nullable<> and List<> objects I am going to serialize. Example:
[DataContract(Na
Mark the field with
[DataMember(EmitDefaultValue=false)]
That will work for at the least the nullable value type case. For the List case you may need to defer creation of the list until it is needed, or else null the member if it is empty before serialization.
I really needed the same thing, but applied globally to lots of fields in generated RIA classes. I'm not sure if this XML is acceptable to DataConstract for deserializing. But it is readable, which suites my purposes...
public override string ToString()
{
var doc = XDocument.Parse(this.ToXML());
WalkElement(doc.Root);
return doc.ToString( SaveOptions.None );
}
void WalkElement(XElement e)
{
var n = e.GetNamespaceOfPrefix("i");
if (n != null)
{
var a = e.Attribute(n + "nil");
if (a != null && a.Value.ToLower() == "true")
e.Remove();
}
foreach (XElement child in e.Elements().ToList())
WalkElement(child);
}