我有一個對象具有類型屬性。當類型設置爲Int64,並且稍後嘗試並拉動類型信息時,我得到System.Nullable。int64的GetType返回System.Nullable
這裏的類型信息
{Name = "Nullable`1" FullName = "System.Nullable`1[[System.Int64, mscorlib, Version=2.0.0.0]]"}
我怎麼到System.Int64類型的呢?
我有一個對象具有類型屬性。當類型設置爲Int64,並且稍後嘗試並拉動類型信息時,我得到System.Nullable。int64的GetType返回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
如果給定Type
不是Nullable<T>
你可以使用空合併運算符(?)的值默認爲原始類型。
Type t = Nullable.GetUnderlyingType(nullableType);
請參閱MSDN。
如果對象不爲空,GetType將返回Int64。
也許你將你的類型屬性設置爲「System.Int64?」地方?否則我不能重現你的行爲。
if (property.PropertyType.IsGenericType
&& property.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
對我而言......奇怪的行爲當然可以通過我們沒有的信息來解釋;) – ybo 2009-02-19 15:07:11