web-dev-qa-db-ja.com

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オブジェクトからそれがどのようなタイプであるかを知るにはどうすればよいですか。

文字列、int、doubleなどの基本的なものを処理する必要があります。ただし、オブジェクトも処理する必要があります。その場合、オブジェクト内の基本データを検証するためにオブジェクト内をさらに下に移動する必要がある場合は、文字列なども使用します。

ありがとう。

100
peter

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