Cómo deserializar JSON con una colección de tipos sin nombre usando DataContractSerializer

Estoy usando el servicio web para obtener datos sobre el kilometraje de la ruta. Luego estoy usando deserializer para analizarlo. Así es como se ve JSON:

[{"__type":"CalculateMilesReport:http:\/\/pcmiler.alk.com\/APIs\/v1.0","RouteID":null,"TMiles":445.5]

Con esta respuesta tuve un par de problemas. ¿Por qué está envuelto en la colección y cómo configuro el modelo de objetos? También se quejaba del atributo especial __type. Entonces, "pirateé" y "preparé" la cadena:

// Cut off first and last charachters [] - they send objects as arrays
rawJSON = rawJSON.Substring(1, rawJSON.Length - 2);

// Hide "__type" attribute as it messes up serializer with namespace
rawJSON = rawJSON.Replace("__type", "type");

Entonces todo funcionó con este objeto:

[DataContract]
public class PCMilerResponse
{
    [DataMember(Name = "Errors", EmitDefaultValue = false)]
    public PCMilerError[] Errors { get; set; }

    [DataMember(Name = "TMiles", EmitDefaultValue = false)]
    public decimal DrivingDistance { get; set; }    
}

Ahora modifiqué la llamada al servicio web y obtengo la siguiente respuesta

[
{"__type":"CalculateMilesReport:http:\/\/pcmiler.alk.com\/APIs\/v1.0","RouteID":null,"TMiles":445.5},
{"__type":"GeoTunnelReport:http:\/\/pcmiler.alk.com\/APIs\/v1.0","RouteID":null,"GeoTunnelPoints":
    [{"Lat":"34.730466","Lon":"-92.247147"},{"Lat":"34.704863","Lon":"-92.29329"},{"Lat":"34.676312","Lon":"-92.364654"},{"Lat":"29.664271","Lon":"-95.236735"}]
}
]

Ahora tiene sentido por qué hay una matriz y "__type". Pero no estoy seguro de cómo escribir un objeto para analizarlo correctamente. Supongo que se deben aplicar atributos especiales y tal vez una matriz genérica debe estar allí. ¿Alguna ayuda sobre cómo deserializarlo adecuadamente?

PD Puedo hacer más piratería y reemplazar esas cadenas haciéndolo objeto con 2 objetos dentro, pero me pregunto si hay una forma "adecuada" de manejarlo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta