我想动态地分析对象树以进行一些自定义验证。验证本身并不重要,但我想更好地了解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对象中找出它是什么类型?我将不得不处理一些基本的东西,例如字符串,整数, double 。但是我也必须处理对象,如果是这样,我将需要遍历这些对象内部的对象树以验证其中的基本数据,它们还将具有字符串等。
最佳答案
使用 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;
}
关于c# - 使用PropertyInfo找出属性类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3723934/