Использование 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 ответ:
использовать
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; }