Jak pominąć domyślną serializację tablic JavaScript dla typów IEnumerable w Json.Net?

Niektóre typy niestandardowe, które implementują IEnumerable, niekoniecznie mają zbiory kopii zapasowych. Mogą być generowane dynamicznie, na przykład przy użyciu „yield” lub LINQ. Oto przykład:

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();
        }
    }
}

Odkryłem, że domyślna serializacja przez Json.NET polega na wyliczeniu każdej wartości i zapisaniu wartości w tablicy JavaScript (czego nie chcę). Domyślny deserializator nie będzie mógł następnie deserializować kolekcji, ponieważ nie może być wypełniony. W takich przypadkach chciałbym, aby Json.NET pomijał domyślną serializację tablic JavaScript i po prostu zapisywał członków klasy.

Wszystko czego chcę to moje klucze i wartości - czy jest jakiś sposób na to, czy muszę zaimplementować własny niestandardowy serializator?

Sprawdzoneto ito, z których żadne nie jest dokładnie moim pytaniem. Zeskanowanedokumentacja również, ale nie znalazłem tego, czego szukałem (być może spojrzałem w niewłaściwe miejsce).

(Edytuj # 1 - poprawiona przejrzystość)

(Edytuj # 2 - odpowiedział na moje własne pytanie ... patrz poniżej)

questionAnswers(1)

yourAnswerToTheQuestion