Как пропустить сериализацию массива JavaScript по умолчанию для типов IEnumerable в Json.Net?

Некоторые пользовательские типы, которые реализуют IEnumerable, не обязательно имеют резервные коллекции. Они могут генерироваться динамически, например, с использованием yield или LINQ. Вот пример:

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

Я обнаружил, что сериализация по умолчанию в Json.NET состоит в перечислении каждого значения и сохранении значений в массиве JavaScript (который мне не нужен). Затем десериализатор по умолчанию не сможет десериализовать коллекцию, поскольку она не может быть заполнена. В этих случаях я бы вместо этого хотел, чтобы Json.NET пропустил сериализацию массива JavaScript по умолчанию и просто сохранил членов класса.

Все, что мне нужно, это мои ключи и значения - есть ли какой-нибудь быстрый способ сделать это, или мне нужно реализовать свой собственный сериализатор?

Провереноэто а такжеэто, ни один из которых не является моим вопросом. Отсканированныедокументация также, но не нашел то, что искал (возможно, я искал не в том месте).

(Правка № 1 - улучшенная ясность)

(Edit # 2 - ответил на мой собственный вопрос ... см. Ниже)

Ответы на вопрос(1)

Ваш ответ на вопрос