Cannot serialize member 'XXX' of type System.Nullable`1[System.Decimal]. XmlAttribute/XmlText cannot be used to encode complex types

Boomerang picture Boomerang · Oct 4, 2011 · Viewed 9.5k times · Source

I'm getting the following error when using a web service: Cannot serialize member 'XXX' of type System.Nullable`1[System.Decimal]. XmlAttribute/XmlText cannot be used to encode complex types.

I understand the error and found a solution on this blog: https://web.archive.org/web/20120201220703/http://www.jamesewelch.com/2009/02/03/how-to-serialize-subsonic-objects-with-nullable-properties/

I would like to use solution 2, as you will see from my comments on the blog I'm not having much luck. I'm using an ExcuteTypeList to bring the data back.

Any pointers or help would be great.

Thanks

Answer

NET3 picture NET3 · May 11, 2012

You need to remove [XmlAttribute] and apply [XmlElement] to the XXX field.

[XmlElement(IsNullable = true)] public decimal? XXX;

public bool ShouldSerializeXXX()
{
   return XXX.HasValue;
}