typeプロパティを持つオブジェクトがあります。タイプがInt64に設定されていて、後でタイプ情報を取得しようとすると、System.Nullableが取得されます。
これがタイプ情報です
{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}
このタイプのSystem.Int64にアクセスするにはどうすればよいですか?
そのタイプまたはその基になるタイプのいずれかが必要な特定のタイプがあるようですNullable<T>
。これを行う最善の方法は、次のようなものです。
Nullable.GetUnderlyingType(yourObject.Type) ?? yourObject.Type;
指定されたがそうでない場合にNullabe.GetUnderlyingType
返すため、null 合体演算子 (??) を使用して値を元の型にデフォルト設定できます。null
Type
Nullable<T>
Type t = Nullable.GetUnderlyingType(nullableType);
MSDNを参照してください。
if ( property.PropertyType.IsGenericType
&& property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) )
オブジェクトがnullでない場合、GetTypeはInt64を返します。
type-property を「System.Int64」に設定している可能性があります。どこでも?そうしないと、あなたの行動を再現できません。