2009-02-19 77 views
5

我有一個對象具有類型屬性。當類型設置爲Int64,並且稍後嘗試並拉動類型信息時,我得到System.Nullable。int64的GetType返回System.Nullable

這裏的類型信息

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

我怎麼到System.Int64類型的呢?

回答

6

這聽起來像你有一個給定的類型,如果它是Nullable<T>,你想要的類型或其基礎類型。要做到這一點,最好的辦法是這樣的:

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

由於Nullabe.GetUnderlyingType返回null如果給定Type不是Nullable<T>你可以使用空合併運算符(?)的值默認爲原始類型。

1
Type t = Nullable.GetUnderlyingType(nullableType); 

請參閱MSDN

0

如果對象不爲空,GetType將返回Int64。

0

也許你將你的類型屬性設置爲「System.Int64?」地方?否則我不能重現你的行爲。

+0

對我而言......奇怪的行爲當然可以通過我們沒有的信息來解釋;) – ybo 2009-02-19 15:07:11

1
if (property.PropertyType.IsGenericType 
    && property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) 
相關問題