Я застрял в подобной проблеме.
У меня было свойство datetime (как XmlAttribute) в классе, который был представлен в службе WCF.
Ниже приведено то, с чем я столкнулся, и решение, которое сработало для меня:
1) Класс XmlSerializer не сериализовал атрибут XmlAttulble типа nullable
[XmlAttribute]
public DateTime? lastUpdatedDate { get; set; }
Exception thrown : Cannot serialize member 'XXX' of type System.Nullable`1.
2) В некоторых сообщениях предлагается заменить [XmlAttribute] на [XmlElement (IsNullable = true)]. Но это сериализует Атрибут как Элемент, который совершенно бесполезен. Однако он прекрасно работает для XmlElements
3) Некоторые предлагают реализовать интерфейс IXmlSerializable в вашем классе, но это не позволяет вызывать службу WCF из приложения, потребляющего WCF.
Так что это тоже не работает в этом случае.
Решение:
Не помечайте свойство как обнуляемое, вместо этого используйте метод ShouldSerializeXXX (), чтобы установить ограничение.
[XmlAttribute]
public DateTime lastUpdatedDate { get; set; }
public bool ShouldSerializelastUpdatedDate ()
{
return this.lastUpdatedDate != DateTime.MinValue;
// This prevents serializing the field when it has value 1/1/0001 12:00:00 AM
}