Como desserializar JSON com coleção de tipos sem nome usando DataContractSerializer

Estou usando o serviço da web para obter dados sobre a milhagem da rota. Então estou usando o desserializador para analisá-lo. Aqui está a aparência do JSON:

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

Com esta resposta, tive alguns problemas. Por que o pacote é agrupado e como faço para definir o modelo de objeto? Também estava reclamando do atributo __type especial. Então, eu "hackeei" e "preparei" a string:

// 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");

Então tudo funcionou com 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; }    
}

Agora modifiquei a chamada para o serviço web e recebo a resposta a seguir

[
{"__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"}]
}
]

Agora faz sentido por que existe matriz e "__type". Mas não tenho certeza de como escrever um objeto para analisá-lo corretamente. Eu acho que atributos especiais precisam ser aplicados e talvez a matriz genérica precise estar lá? Alguma ajuda sobre como desserializar adequadamente?

P.S. Eu posso fazer mais hackers e substituir essas strings, tornando-o objeto com 2 objetos dentro, mas me pergunto se existe uma maneira "adequada" de lidar com isso.

questionAnswers(2)

yourAnswerToTheQuestion