2010-02-16 80 views
4

我使用從我的dbml文件生成的我的數據類的屬性生成T4模板。要獲得我使用item.PropertyType.Name的類的屬性類型,問題在於,對於可爲空的類型,它將返回Nullable``Nullable for example, or int?`?如何獲得可空類型的字符串類型

回答

7

GetGenericArguments是你想要的方法。

if (item.PropertyType.IsGenericType) { 
    if (item.PropertyType.GetGenericType() == typeof(Nullable<>)) { 
     var valueType = item.PropertyType.GetGenericArguments()[0]; 
    } 
} 

關於第二個想法,雖然,達倫的回答是在這種情況下,更簡單,因爲當你在一個非可空類型傳遞將返回null。

11

int? === Nullable<int>。他們是一樣的。如果你想知道,可空是什麼類型的,那麼你可以使用Nullable.GetUnderlyingType(typeof(int?))方法獲取的類型(在這種情況下int

Nullable.GetUnderlyingType

0

看看this other question。 Marc Gravell的答案會告訴你如何獲得泛型參數的類型。