JSON.Net-Serialisierung Zählt standardmäßig Zeichenfolgen in Wörterbüchern auf - wie wird die Serialisierung auf int vorgenommen?

Warum endet mein serialisierter JSON als

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

d.h. warum werden die Aufzählungen zu ihrem Wert serialisiert, aber wenn sie einen Schlüssel für das Wörterbuch bilden, werden sie in ihren Schlüssel konvertiert?

Wie mache ich sie zu Ints im Wörterbuch und warum ist dies nicht das Standardverhalten?

Ich erwarte die folgende Ausgabe

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

Vielen Dank

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage