web-dev-qa-db-fra.com

Utilisation de PropertyInfo pour connaître le type de propriété

Je souhaite analyser dynamiquement une arborescence d'objets pour effectuer une validation personnalisée. La validation n'est pas importante en tant que telle, mais je souhaite mieux comprendre la classe PropertyInfo.

Je vais faire quelque chose comme ça,

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;
}

En réalité, la seule partie qui m’intéresse pour le moment est "si la propriété est une chaîne". Comment puis-je savoir à partir d'un objet PropertyInfo de quel type il s'agit.

Je vais devoir m'occuper de choses basiques comme des cordes, des ints, des doubles. Mais je devrai aussi traiter des objets, et si donc je devrais parcourir l'arborescence des objets plus bas dans ces objets pour valider les données de base qu'ils contiennent, ils auront également des chaînes, etc.

Merci.

100
peter

Utilisation PropertyInfo.PropertyType pour obtenir le type de la propriété.

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;
}
191
Igor Zevaka