根据标题,我想要一个给定类的所有内部类的列表,可以是名称列表或类型列表 - 我并不关心。这是否可能?我认为可以使用反射方式实现,但我还没有找到合适的方法。
您需要使用Type.GetNestedTypes。这将返回类型列表,然后您可以查询它们的名称。
type.GetTypeInfo().DeclaredNestedTypes
。 - ErikE你需要的功能不是 Type.GetNestedTypes
吗?
请注意,如果你想获取 "双重嵌套" 的类型,你需要递归 - 因为 Foo.Bar.Baz 是在 Foo.Bar 中的一个嵌套类型,而不是在 Foo 中。
对于 "现代" 环境(.NET 4.5、PCLs、UWA 等),你需要使用 TypeInfo.DeclaredNestedTypes
,例如 type.GetTypeInfo().DeclaredNestedTypes
,并使用 GetTypeInfo()
扩展方法。
typeof(T).GetTypeInfo().DeclaredNestedTypes
。 - ErikEType.GetNestedTypes()方法将返回指定类型的公共嵌套类型。
如果您还想获取私有和内部嵌套类型,必须像这样调用Type.GetNestedTypes(BindingFlags bindingFlags)方法:
Type[] nestedTypes = typeof(MyType).GetNestedTypes(BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic);
Type[] nested = typeof(SomeClass).GetNestedTypes();