2011-07-16 107 views
3

我有一個對象,我使用反射創建了一個實體(T)。該對象是我實現的一個表。它擁有的列清單,我使用反射從實體中提取它們的屬性:強制轉換原始類型爲可空對象

public class Generic_Table<T> : Table 
    {   
     ...// in ctor 
     type = this.GetType().GetGenericArguments()[0]; // type of T 
     BuildColumns(type); 

     private void BuildColumns(Type type) 
     { 
      PropertyInfo[] properties = type.GetProperties(); 

      Columns = new KeyValuePair<string, Type>[properties.Count()]; 
      int i = 0; 
      foreach (PropertyInfo property in properties) 
      { 
       Columns[i++] = new KeyValuePair<string, Type>(property.Name, property.PropertyType);     
      } 
     } 

我正在尋找一種方式來投的PropertyType值作爲可空類型,所以在列Type值會如果例如int?的值爲int,則其值。

+0

我需要獲得15個聲望才能接受答案 所以我真的不能工作呢。 .. –

+0

好吧,iv'e標記所有幫助完整答案..我不知道爲什麼它說100%現在.. 我沒有標記他們所有,但我沒有標記一個我曾得到答案 –

回答

3

這將你需要的東西:

Type nullableType = typeof(Nullable<>).MakeGenericType(property.PropertyType); 

MakeGenericType方法接受的泛型類型參數的參數數組。查看文檔瞭解更多信息:

此外,這篇文章有類似的東西一個很好的例子,你在這裏做什麼:

+0

謝謝男人 ,做到了。 –

相關問題