从object子类获取属性

时间:2017-05-24 12:22:09

标签: c# system.reflection

我循环遍历一个包含子类的类对象,以检查和修改空字符串值:

foreach (PropertyInfo prop in contact.GetType().GetProperties())
{
    if(prop.PropertyType == typeof(string) && prop.GetValue(contact, null) == null)
    {
        prop.SetValue(contact, "");
    }

    if (prop.PropertyType.IsClass)
    {
        PropertyInfo[] props = prop.PropertyType.GetProperties();

        foreach (PropertyInfo propint in props)
        {
            if (propint.PropertyType == typeof(string) && propint.GetValue(prop, null) == null)
            {
                propint.SetValue(prop, "");
            }
        }
    }
}

问题是我在调用propint.GetValue(prop, null)时得到异常“对象不匹配目标类型”,我想那个对象的引用不正确但我不确定我应该放在那里引用子类对象。

1 个答案:

答案 0 :(得分:1)

您需要传递包含您要访问的属性的对象的实例:

if (prop.PropertyType.IsClass)
{
    PropertyInfo[] props = prop.PropertyType.GetProperties();
    var propValue = prop.GetValue(contact, null);

    foreach (PropertyInfo propint in props)
    {
        if (propint.PropertyType == typeof(string) && propint.GetValue(propValue, null) == null)
        {
            propint.SetValue(propValue, "");
        }
    }
}