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
相关产品推荐
相关产品推荐

