1. ホーム
  2. c#

[解決済み] PropertyInfo を使用してプロパティの種類を確認する

2022-08-17 05:43:53

質問

オブジェクト ツリーを動的に解析して、カスタム検証を行いたいと思います。検証はそのように重要ではありませんが、私は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のような基本的なものを扱わなければなりません。もしそうなら、オブジェクト内の基本的なデータを検証するために、オブジェクトツリーをさらに下層までたどる必要があり、それらはまた文字列などを持つでしょう。

どのように解決するのですか?

使用方法 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;
}