16

get プロパティ タイプにリフレクションを使用したい。これは私のコードです

var properties = type.GetProperties();
foreach (var propertyInfo in properties)
{
     model.ModelProperties.Add(
                               new KeyValuePair<Type, string>
                                               (propertyInfo.PropertyType.Name,
                                                propertyInfo.Name)
                              );
}

このコードpropertyInfo.PropertyType.Nameは問題ありませんが、私のプロパティ タイプがNullableこのNullable'1文字列を取得し、書き込みのFullName場合はこの攪拌を取得しますSystem.Nullable1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

4

2 に答える 2

31

null許容型を探すようにコードを変更します。その場合は、最初のジェネリック引数としてPropertyTypeを使用します。

var propertyType = propertyInfo.PropertyType;

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

model.ModelProperties.Add(new KeyValuePair<Type, string>
                        (propertyType.Name,propertyInfo.Name));
于 2013-02-16T13:18:35.707 に答える