Usando PropertyInfo para averiguar el tipo de propiedad


Quiero analizar dinámicamente un árbol de objetos para hacer alguna validación personalizada. La validación no es importante como tal, pero quiero entender mejor la clase PropertyInfo.

Voy a hacer algo como esto,

public bool ValidateData(object data)
{
    foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
    {
        if (the property is a string)
        {
            string value = propertyInfo.GetValue(data, null);

            if value is not OK
            {
                return false;
            }
        }
    }            

    return true;
}

Realmente la única parte que me importa en este momento es 'si la propiedad es una cadena'. Cómo puedo averiguar de un objeto PropertyInfo qué tipo es.

Tendré que lidiar con cosas básicas como cuerdas, ints, dobles. Pero también tendré que tratar con objetos también, y si es así necesitaré recorrer el árbol de objetos más abajo dentro de esos objetos para validar los datos básicos dentro de ellos, también tendrán cadenas, etc.

Gracias.

Author: peter, 2010-09-16

1 answers

Uso PropertyInfo.PropertyType para obtener el tipo de la propiedad.

public bool ValidateData(object data)
{
    foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
    {
        if (propertyInfo.PropertyType == typeof(string))
        {
            string value = propertyInfo.GetValue(data, null);

            if value is not OK
            {
                return false;
            }
        }
    }            

    return true;
}
 163
Author: Igor Zevaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-16 05:28:29