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

时间:2011-04-06 12:34:49

标签: c# .net reflection inner-classes

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

非常感谢, 托马斯

5 个答案:

答案 0 :(得分:35)

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

答案 1 :(得分:9)

Type.GetNestedTypes做你想做的事吗?

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:3)

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

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

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

答案 4 :(得分:2)

是的,有。使用Type.GetNestedTypes()