Сериализация JSON.Net Перечисляет строки в словари по умолчанию - как заставить его сериализовать в int?

Почему мой сериализованный JSON заканчивается как

{"Gender":1,"Dictionary":{"Male":100,"Female":200}}

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

Как мне сделать их словарями в словаре, и почему это не поведение по умолчанию?

Я ожидал следующий вывод

{"Gender":1,"Dictionary":{"0":100,"1":200}}

Спасибо

    public void foo()
    {
        var testClass = new TestClass();
        testClass.Gender = Gender.Female;
        testClass.Dictionary.Add(Gender.Male, 100);
        testClass.Dictionary.Add(Gender.Female, 200);

        var serializeObject = JsonConvert.SerializeObject(testClass);

        // serializeObject == {"Gender":1,"Dictionary":{"Male":100,"Female":200}}
    }

    public enum Gender
    {
        Male = 0,
        Female = 1
    }

    public class TestClass
    {
        public Gender Gender { get; set; }
        public IDictionary<Gender, int> Dictionary { get; set; }

        public TestClass()
        {
            this.Dictionary = new Dictionary<Gender, int>();
        }
    }
}

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

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