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

编译报错CS1579:如何遍历反射获取的Dictionary<string,object>?

解决CS1579错误并遍历settings字典

你遇到的问题是因为item是PropertyInfo类型(仅描述属性的元数据),而非属性的实际值,PropertyInfo本身不支持foreach遍历。要遍历settings对应的字典,需要先获取该属性的实际值并转换为Dictionary<string, object>类型,具体修改如下:

修改后的代码

PropertyInfo[] propertyInfos = MyResponse.MyDocument.GetType().GetProperties();
foreach (var item in propertyInfos)
{
    if (item.Name != "settings")
    {
         // 执行非settings属性的操作
    }
    else
    {
         // 获取settings属性的实际值
         var settingsValue = item.GetValue(MyResponse.MyDocument) as Dictionary<string, object>;
         // 判空避免空引用异常
         if (settingsValue != null)
         {
              foreach (var setting in settingsValue)
              {
                   // 遍历字典的操作,setting是KeyValuePair<string, object>类型
                   // 可通过setting.Key和setting.Value访问键值对
              }
         }
     }
}

关键说明

  • item.GetValue(MyResponse.MyDocument):通过PropertyInfo获取目标对象(MyResponse.MyDocument)上该属性的实际值。
  • as Dictionary<string, object>:将值安全转换为字典类型,转换失败时返回null,避免强制转换抛出异常。
  • 判空检查:确保转换成功后再执行遍历,防止空引用错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:54:52