c# - 为什么我使用反射设置属性值的代码不起作用?
问题描述
所以我试图将属性值从内部类传递给公共结构。两者具有相同的属性名称和相同的大小写。我没有收到任何错误,但未设置结构中的属性。
foreach (UserProfile.UserProfileRecord r in rslt.record)
{
UserProfileRecord upr = new UserProfileRecord();
Type uprType = upr.GetType();
foreach (PropertyInfo p in r.GetType().GetProperties())
{
Debug.WriteLine(p.Name + " : " + p.GetValue(r));
PropertyInfo pi = uprType.GetProperty(p.Name);
pi.SetValue(upr, p.GetValue(r));
Debug.WriteLine(pi.Name + " - " + pi.GetValue(upr));
}
}
调试的输出如下:
city : YERMO
city -
state : CA
state -
zip : 92398
zip -
telephone : 714-256-8463
telephone -
我已经将我的代码与 Microsoft 和 SO 上的其他几个示例进行了比较,我看不出我做错了什么。
我将结构传回给调用者,并将其用作 DataGridView 的数据源。列名称出现,但单元格为空。当停下来查看结构时,我看到所有属性值都是空的。
我究竟做错了什么?
解决方案
推荐阅读
- python - 在 Pandas 中选择特定月份的行
- c# - Swagger return 无法在某些 API 上获取
- java - Springboot 无法通过 autowired 注解初始化和注入第三方 bean
- swift - UIImage 出现在屏幕上后执行块
- javascript - 使用 Javascript 修改 HTML 代码,其中包含一些用于登录表单的 php 变量
- awk - 将百分比添加到制表符分隔文本中的列
- gcc - MathSage 无法编译 _scproxy
- c# - linecast 总是返回 true
- javascript - 如何将对象列表插入 GoJ?
- python - 从循环内部返回是一种好习惯吗