有没有办法在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);