Есть ли способ получить список внутренних классов в С#?

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

Большое спасибо, Томас

Ответы

Ответ 1

Вы хотите Type.GetNestedTypes. Это даст вам список типов, которые вы можете запросить для своих имен.

Ответ 2

Не Type.GetNestedTypes делать то, что вы хотите?

Обратите внимание, что если вы хотите получить "двойные вложенные" типы, вам нужно будет рекурсивно - поскольку Foo.Bar.Baz является вложенным типом в Foo.Bar, а не в Foo.

Для "современных" сред (.NET 4.5, PCL, UWA и т.д.) вам нужно TypeInfo.DeclaredNestedTypes, например. type.GetTypeInfo().DeclaredNestedTypes, используя GetTypeInfo() метод расширения.

Ответ 3

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

Ответ 5

Type.GetNestedTypes() вернет общедоступные вложенные типы указанного типа.

Если вам также нужны частные и внутренние вложенные типы, вы должны вызвать метод Type.GetNestedTypes(BindingFlags bindingFlags) следующим образом:

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