为什么我使用反射设置属性值的代码不起作用?

时间:2019-01-09 04:18:06

标签: c# reflection system.reflection

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

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的数据源。出现列名称,但单元格为空。休息片刻并查看结构时,我看到所有属性值都为空。

我在做什么错了?

0 个答案:

没有答案