As you mentioned when you request for the service might return . So do you know if an request is made for a type then the service might return only certain types back?
I would have tried XmlSerializer Constructor (Type, Type[])...
Initializes a new instance of the XmlSerializer class that can serialize objects of the specified type into XML documents, and deserialize XML documents into object of a specified type. If a property or field returns an array, the extraTypes parameter specifies objects that can be inserted into the array.