1. ホーム
  2. c#

[解決済み] リフレクションでNULL可能なプロパティの種類を検索する

2023-04-15 08:34:11

質問

私はリフレクションによってオブジェクトのプロパティを調べ、各プロパティのデータ型を処理し続ける。以下は私の(縮小された)ソースです。

private void ExamineObject(object o)
{
  Type type = default(Type);
  Type propertyType = default(Type);
  PropertyInfo[] propertyInfo = null;

  type = o.GetType();

  propertyInfo = type.GetProperties(BindingFlags.GetProperty |
                                    BindingFlags.Public |
                                    BindingFlags.NonPublic |
                                    BindingFlags.Instance);
  // Loop over all properties
  for (int propertyInfoIndex = 0; propertyInfoIndex <= propertyInfo.Length - 1; propertyInfoIndex++)
  {
    propertyType = propertyInfo[propertyInfoIndex].PropertyType;
  }
}

私の問題は、私は新たにnullableプロパティを処理する必要があることですが、nullableプロパティの型を取得する方法がわからないことです。

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

可能な解決方法です。

    propertyType = propertyInfo[propertyInfoIndex].PropertyType;
    if (propertyType.IsGenericType &&
        propertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
    {
      propertyType = propertyType.GetGenericArguments()[0];
    }