根据标题。我想要一个给定类的所有内部类的列表,它可以是名称列表或类型列表 - 我不是很好。这可能吗?我以为可能有一种方法可以使用反射,但却找不到反射。
非常感谢, 托马斯
答案 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()
。