Como ignorar a serialização de matrizes JavaScript padrão para tipos IEnumerable no Json.Net?

Alguns tipos personalizados que implementam IEnumerable não têm necessariamente coleções de backup. Eles podem ser gerados dinamicamente, por exemplo, usando 'yield' ou LINQ. Aqui está um exemplo:

public class SOJsonExample
{
    public class MyCustomEnumerable : IEnumerable<KeyValuePair<int,float>>
    {
        public List<int> Keys { get; set; }
        public List<float> Values { get; set; }

        public MyCustomEnumerable()
        {
            Keys = new List<int> { 1, 2, 3 };
            Values = new List<float> { 0.1f, 0.2f, 0.3f };
        }

        public IEnumerator<KeyValuePair<int, float>> GetEnumerator()
        {
            var kvps =
                from key in Keys
                from value in Values
                select new KeyValuePair<int, float>(key, value);

            return kvps.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this.GetEnumerator();
        }
    }
}

Eu descobri que a serialização padrão pelo Json.NET é para enumerar cada valor e armazenar os valores em uma matriz JavaScript (o que eu não quero). O desserializador padrão falhará na desserialização da coleção, pois ela não pode ser preenchida. Nesses casos, gostaria que o Json.NET ignorasse a serialização padrão da matriz JavaScript e apenas armazenasse os membros da classe.

Tudo que eu quero é minhas chaves e valores - existe alguma maneira de fazer isso, ou eu tenho que implementar meu próprio serializador personalizado?

Verificadoisto eisto, nenhuma das quais é exatamente a minha pergunta. Digitalizadoa documentação também, mas não encontrei o que eu estava procurando (talvez eu olhei no lugar errado).

(Edit # 1 - clareza melhorada)

(Edit # 2 - respondeu minha própria pergunta ... veja abaixo)

questionAnswers(1)

yourAnswerToTheQuestion