有没有办法在C#中获取内部类的列表?

根据标题。 我想要一个给定类的所有内部类的列表,它可以是一个名称列表或类型列表 – 我不是很好。 这可能吗? 我以为可能有一种方法使用reflection但却找不到reflection。

非常感谢,托马斯

你想要Type.GetNestedTypes 。 这将为您提供类型列表,然后您可以查询其名称。

不是Type.GetNestedTypes做你想要的吗?

请注意,如果你想获得“双嵌套”类型,你需要递归 – 因为Foo.Bar.Baz是Foo.Bar中的嵌套类型,而不是Foo。

对于“现代”环境(.NET 4.5,PCL,UWA等),您需要使用TypeInfo.DeclaredNestedTypes ,例如type.GetTypeInfo().DeclaredNestedTypes ,使用GetTypeInfo()扩展方法 。

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

就在这里。 使用Type.GetNestedTypes()

Type.GetNestedTypes( )将返回指定Type的公共嵌套类型。

如果您还需要私有和内部嵌套类型,则必须调用Type.GetNestedTypes(BindingFlags bindingFlags)方法,如下所示:

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