2009-02-19 39 views
5

Tôi có một đối tượng có thuộc tính type. Khi loại được thiết lập để Int64, và tôi cố gắng và kéo các loại thông tin sau, tôi nhận được System.Nullable.GetType of int64 return System.Nullable

Dưới đây là các loại Thông tin

{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"} 

Làm thế nào để có được các loại System.Int64 điều này?

Trả lời

6

Có vẻ như bạn có loại nhất định mà bạn muốn loại đó hoặc loại cơ bản của loại đó nếu là Nullable<T>. Cách tốt nhất để làm điều này sẽ là một cái gì đó như thế này:

Nullable.GetUnderlyingType(yourObject.Type) ?? yourObject.Type; 

Kể từ Nullabe.GetUnderlyingType lợi nhuận null nếu đưa Type không phải là Nullable<T> bạn có thể sử dụng toán tử coalescing null (??) để mặc định các giá trị cho các loại gốc.

1
Type t = Nullable.GetUnderlyingType(nullableType); 

Xem MSDN.

0

Nếu đối tượng không rỗng, GetType sẽ trả về Int64.

0

Có thể bạn đặt thuộc tính type thành "System.Int64?" ở đâu? Nếu không, tôi không thể tái tạo hành vi của bạn.

+0

Tương tự đối với tôi ... Hành vi lạ chắc chắn có thể được giải thích bởi thông tin chúng tôi không có;) – ybo

1
if (property.PropertyType.IsGenericType 
    && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) 
Các vấn đề liên quan