Использование PropertyInfo для определения типа свойства


Я хочу, чтобы динамически обработать дерево объектов, чтобы сделать некоторые пользовательские проверки. Проверка не важна как таковая, но я хочу лучше понять класс PropertyInfo.

Я буду делать что-то вроде этого,

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

на самом деле единственная часть, о которой я забочусь в данный момент, - это "если свойство является строкой". Как я могу узнать из объекта PropertyInfo, какой это тип.

мне придется иметь дело с основными вещами, такими как строки, ints, Double. но я также придется иметь дело с объектами, и если это так, мне нужно будет пройти по дереву объектов дальше внутри этих объектов, чтобы проверить основные данные внутри них, у них также будут строки и т. д.

спасибо.

1 83

1 ответ:

использовать PropertyInfo.PropertyType чтобы получить тип свойства.

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