Obtenez tous les domaines de la statique des classes à l'intérieur de classe statique avec réflexion

J'ai une classe statique qui contient beaucoup de classes statiques. Chaque interne statique de la classe contient des champs. Je veux obtenir tous les champs de tous inner classes statiques.

public static class MyClass
{
    public static class MyInnerClass1
    {
        public const string Field1 = "abc";
        public const string Field2 = "def";
        public const string Field3 = "ghi";
    }
    public static class MyInnerClass2
    {
        public const int Field1 = 1;
        public const int Field2 = 2;
        public const int Field3 = 3;
    }
    ...
}

Je voudrais imprimer le nom de chaque intérieur classe, suivi par le nom et la valeur de chaque champ.

Par exemple:

MyInnerClass

Champ1 = "abc"

...

Je n'ai aucun problème à obtenir le nom de toutes les classes:

var members = typeof(MyClass).GetMembers(BindingFlags.Public | BindingFlags.Static);

var str = ""; 
foreach (var member in members)
{
    str += member.Name +" ";             
}

Ou le nom et la valeur de tous les champs dans une classe spécifique:

var fields = typeof(MyClass.MyInnerClass1).GetFields();
foreach (var field in fields)
{
    str += field.Name + "-";
    str += field.GetValue(typeof(MyClass.MyInnerClass1));
}

Mais comment puis-je combiner cela?
Les noms et le nombre de l'intérieur de classes statiques peuvent changer.

InformationsquelleAutor flafffl | 2013-03-12