首页 > 解决方案 > 为什么我使用反射设置属性值的代码不起作用?

问题描述

所以我试图将属性值从内部类传递给公共结构。两者具有相同的属性名称和相同的大小写。我没有收到任何错误,但未设置结构中的属性。

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 的数据源。列名称出现,但单元格为空。当停下来查看结构时,我看到所有属性值都是空的。

我究竟做错了什么?

标签: c#reflectionsystem.reflection

解决方案


推荐阅读