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

Blazor反射取值问题:无法获取对象属性值求助

问题原因与解决方法

你代码里GetValue失效的核心原因是传错了参数:

  • 你通过typeof(Statistics)获取的是单个Statistics对象的实例属性,而调用prop.GetValue(stats)时,传入的stats是Statistics[]数组,不是单个Statistics实例。GetValue找不到数组上对应Statistics类的属性,自然拿不到正确值。

修正后的代码

@using System.Reflection

<p>@str</p>

@code {
    public string str = ""; // 初始化为空字符串,避免null拼接问题
    private Statistics[]? stats;

    protected override async Task OnInitializedAsync()
    {
        // 加载远程数据,覆盖默认的数组
        stats = await Http.GetFromJsonAsync<Statistics[]>("sample-data/CoreDataCompany2023E.json");

        if (stats == null) return;

        Type type = typeof(Statistics);
        var properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public);

        // 先遍历数组里的每个Statistics实例
        foreach (var item in stats)
        {
            // 再遍历每个实例的属性
            foreach (var prop in properties)
            {
                var value = prop.GetValue(item);
                str += $"{prop.Name}: {value}, ";
            }
            str += "<br/>"; // 每个实例的属性值换行显示
        }    
    }

    public class Statistics
    {
        public string Year { get; set; } = ""; // 给属性默认值,避免null
        public int Volume { get; set; }
    };
}

额外注意点

  • 原代码里有两个@code块,合并成一个更清晰,避免变量重复定义的问题。
  • 给Statistics的Year属性加了默认空字符串,防止反序列化时出现null。
  • 先判断stats是否为null,避免空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:55:04