You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历C#嵌套类获取各嵌套类的字段信息?

遍历嵌套类获取字段信息的正确实现

你的代码无法获取字段内容,核心问题是错误获取了成员的类型:你调用property.GetType()拿到的是MemberInfo自身的类型,而非嵌套类的实际类型。Permissions中的Aircraft、TripRecord是嵌套静态类,属于Type类型的成员,需要先定位到这些嵌套类的Type对象,再读取其字段。

正确实现代码

var permissionType = typeof(Permissions);
// 直接获取Permissions下的所有公共静态嵌套类
var nestedTypes = permissionType.GetNestedTypes(BindingFlags.Public | BindingFlags.Static);

foreach (var nestedType in nestedTypes)
{
    // 获取当前嵌套类的所有公共静态字段
    var fields = nestedType.GetFields(BindingFlags.Public | BindingFlags.Static);
    foreach (var field in fields)
    {
        // const常量字段传null即可获取值
        var fieldValue = field.GetValue(null)?.ToString();
        Console.WriteLine(fieldValue);
    }
}

代码说明

  1. 精准筛选嵌套类:使用GetNestedTypes方法直接获取Permissions类下的公共静态嵌套类,避免遍历无关成员
  2. 绑定标志匹配:获取字段时指定BindingFlags.Public | BindingFlags.Static,确保只拿到目标公共静态常量字段
  3. 常量取值:const类型的静态字段调用GetValue(null)即可获取值,无需实例化对象

输出结果

执行后会输出你期望的内容:

Permissions.Aircraft.View   
Permissions.Aircraft.Create 
Permissions.Aircraft.Edit
Permissions.Aircraft.Delete 
Permissions.TripRecord.View 
Permissions.TripRecord.Create
Permissions.TripRecord.Edit 
Permissions.TripRecord.Delete

内容的提问来源于stack exchange,提问作者Reafidy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:22:45