我想动态地分析对象树以进行一些自定义验证。验证本身并不重要,但我想更好地了解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/

10-09 04:31