Just a note on the solution:
I had to load up the CookComputing XML-RPC project in Visual Studio and change the offending method to return an empty instance of the correct object.
XmlRpcDeserializer.cs
private object MapArray(IEnumerator<Node> iter, Type valType,
MappingStack mappingStack, MappingAction mappingAction,
out Type mappedType)
{
mappedType = null;
// required type must be an array
if (valType != null
&& !(valType.IsArray == true
|| valType == typeof(Array)
|| valType == typeof(object)))
{
if(valType.ToString().Contains("OrderAddress")){ //change this to your mismatch
iter.MoveNext(); //moves increment on through the xml
return Activator.CreateInstance(valType); //returns empty instance of correct object
}
throw new XmlRpcTypeMismatchException(mappingStack.MappingType
+ " contains array value where "
+ XmlRpcTypeInfo.GetXmlRpcTypeString(valType)
+ " expected " + StackDump(mappingStack));
}
In theory you should be able to replace the throw and remove the if
however I have kept it due to closed nature of objects I was working on and wanting to be in control to confirm each "error" was due to a null object return.