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

C#使用反射从不同名称类的属性中获取图片URL的问题求助

解决方案1:对实例二次反射取值

你不需要强转类型,由于8个图片类的尺寸属性命名规则统一(比如你提到的_1/_2/_3对应不同尺寸),直接对拿到的实例对象继续用反射读取对应属性即可,示例代码如下:

PropertyInfo[] properties = typeof(Photos).GetProperties();
foreach (PropertyInfo property in properties)
{
    object imgInstance = property.GetValue(mm);
    if(imgInstance == null) continue;

    // 按需替换为你要取的尺寸对应属性名,比如此处取_1对应的URL
    PropertyInfo sizeProp = imgInstance.GetType().GetProperty("_1");
    if(sizeProp != null)
    {
        string imgUrl = sizeProp.GetValue(imgInstance) as string;
        // 此处即可处理拿到的图片URL
    }
}

提示:如果你的尺寸存储是公开字段而非属性,把上述代码中的GetProperty替换为GetField即可。

解决方案2:优化反序列化逻辑简化操作

如果后续需要频繁操作这些图片属性,可以在反序列化阶段做适配,避免多次反射:

  • 定义统一的图片尺寸接口,包含3个尺寸对应的属性,让8个图片类都实现该接口,拿到实例后直接转为接口类型操作即可
  • 不想定义多个实体类的话,也可以直接用Newtonsoft的JObject解析该部分结构,直接通过键名取值:string url = imgInstance["_1"].ToString()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:36:04