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

在.NET8 Blazor项目中使用反射GetProperty访问公共属性遇阻

解决.NET8 Blazor反射访问公共属性返回null的问题

可能的原因及对应解决方案


1. 未显式指定绑定标志

Type.GetProperty(string) 默认查找公共实例属性,但部分场景(如类型含嵌套属性、框架生成代理类)下,需显式指定绑定标志才能精准匹配属性。

修改代码,添加绑定标志参数:

var property = type.GetProperty("Name", BindingFlags.Public | BindingFlags.Instance);
if (property != null)
{
    var name = property.GetValue(obj[i]);
}

2. 对象实际类型并非MyClass

确认obj[i]的真实类型是否为你定义的MyClass,常见异常场景:

  • 对象是MyClass的子类,但子类未继承/重写Name属性
  • 对象是ORM框架生成的动态代理类(如EF Core代理),可尝试获取基类属性:
var type = obj[i].GetType();
// 若为代理类,切换到基类类型
if (type.BaseType != typeof(object))
{
    type = type.BaseType;
}
var property = type.GetProperty("Name", BindingFlags.Public | BindingFlags.Instance);
  • 可先打印类型全名验证:
Console.WriteLine(obj[i].GetType().FullName);

3. 属性名称大小写不匹配

C#对大小写敏感,检查GetProperty的参数与模型属性名称是否完全一致(如模型是Name,代码写name会直接返回null)。

4. 类型命名空间冲突

若项目存在多个同名MyClass(不同命名空间),需确认obj[i]的类型属于你期望的命名空间,可通过打印类型全名排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 13:32:13