You need to enable JavaScript to run this app. 如何在.NET Core中将PropertyInfo[]转换为自定义类或字典
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core中将PropertyInfo[]转换为自定义类或字典

问题根因

直接返回PropertyInfo[]会触发JSON序列化器递归序列化反射元数据的嵌套属性(比如PropertyInfo.DeclaringType又包含自身的PropertyInfo集合),引发无限递归最终导致请求超时,属于反射元数据类型序列化的典型问题。

解决方案

你不需要把PropertyInfo[]转为类实例,只需要保留原始的myClass对象,遍历PropertyInfo时把修改的属性值直接回写到原对象即可,优先返回原类实例。

方案1:返回原始类实例(推荐)

完整实现代码如下:

// 保留原始类实例,不要丢弃
var myObj = new MyClass();
// 获取属性元数据集合
var properties = myObj.GetType().GetProperties();

foreach (var prop in properties)
{
    // 你的原有遍历修改逻辑示例:比如给所有字符串类型属性赋值
    if (prop.PropertyType == typeof(string))
    {
        // 把修改后的值回写到原始对象
        prop.SetValue(myObj, "修改后的值");
    }
}

// 直接返回原始类实例即可,无需操作PropertyInfo[]
return myObj;

方案2:转换为字典结构返回

如果你需要返回键值对结构,可通过如下代码转换:

var myObj = new MyClass();
var properties = myObj.GetType().GetProperties();

var resultDict = new Dictionary<string, object>();
foreach (var prop in properties)
{
    // 你的原有遍历修改逻辑
    if (prop.PropertyType == typeof(string))
    {
        prop.SetValue(myObj, "修改后的值");
    }
    // 把属性名和属性值写入字典
    resultDict.Add(prop.Name, prop.GetValue(myObj));
}

// 返回字典即可
return resultDict;

内容的提问来源于stack exchange,提问作者Matheus Souza Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:36:12