Is there a way to get a list of innerclasses in C#?

You want Type.GetNestedTypes. This will give you the list of types, which you can then query for their names.


Doesn't Type.GetNestedTypes do what you want?

Note that if you want to get "double-nested" types, you'll need to recurse - as Foo.Bar.Baz is a nested type in Foo.Bar, not in Foo.

For "modern" environments (.NET 4.5, PCLs, UWA etc) you need TypeInfo.DeclaredNestedTypes instead, e.g. type.GetTypeInfo().DeclaredNestedTypes, using the GetTypeInfo() extension method.


Type[] nested = typeof(SomeClass).GetNestedTypes();

Type.GetNestedTypes() will return the public nested types of the specified Type.

If you also want the private and internal nested types, you must call the Type.GetNestedTypes(BindingFlags bindingFlags) method like this:

Type[] nestedTypes = typeof(MyType).GetNestedTypes(BindingFlags.Static |
                                                   BindingFlags.Instance |
                                                   BindingFlags.Public |
                                                   BindingFlags.NonPublic);