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

发布于 2024-10-30 12:05:36 字数 83 浏览 0 评论 0原文

正如标题所示。我想要一个给定类的所有内部类的列表,它可以是名称列表或类型列表 - 我并不大惊小怪。这可能吗?我认为可能有一种使用反射的方法,但尚未找到。

As per the title. I'd like a list of all the inner classes of a given class, it can be a list of names or a list of types - I am not fussed. Is this possible? I thought there might be a way using reflection but haven't been able to find one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

波浪屿的海角声 2024-11-06 12:05:36

您需要 Type.GetNestedTypes。这将为您提供类型列表,然后您可以查询它们的名称。

You want Type.GetNestedTypes. This will give you the list of types, which you can then query for their names.

烟雨扶苏 2024-11-06 12:05:36

不是 Type.GetNestedTypes 做你想做的事?

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

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

Doesn't Type.GetNestedTypes do what you want?

Note that if you want to get "double-nested" types, you'll need to recurse - as Foo.Bar.Baz is a nested type in Foo.Bar, not in Foo.

For "modern" environments (.NET 4.5, PCLs, UWA etc) you need TypeInfo.DeclaredNestedTypes instead, e.g. type.GetTypeInfo().DeclaredNestedTypes, using the GetTypeInfo() extension method.

冬天旳寂寞 2024-11-06 12:05:36

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

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

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

Type.GetNestedTypes() will return the public nested types of the specified Type.

If you also want the private and internal nested types, you must call the Type.GetNestedTypes(BindingFlags bindingFlags) method like this:

Type[] nestedTypes = typeof(MyType).GetNestedTypes(BindingFlags.Static |
                                                   BindingFlags.Instance |
                                                   BindingFlags.Public |
                                                   BindingFlags.NonPublic);
绾颜 2024-11-06 12:05:36
Type[] nested = typeof(SomeClass).GetNestedTypes();
Type[] nested = typeof(SomeClass).GetNestedTypes();
记忆里有你的影子 2024-11-06 12:05:36

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

Yes, there is. Use Type.GetNestedTypes().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文