2011-07-16 4 views
3

J'ai un objet que je crée à partir d'une entité (T) en utilisant la réflexion. L'objet est ma mise en œuvre d'une table. Il contient une liste de colonnes, et j'extraire les propriétés de l'entité utilisant la réflexion:Transmettre un type primitif à un objet Nullable

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);     
      } 
     } 

Je suis à la recherche d'un moyen de jeter la valeur PropertyType comme un type Nullable, de sorte que la valeur Type dans les colonnes serait être int? si, par exemple, une propriété a int pour sa valeur PropertyType.

+0

je dois obtenir 15 réputation avant que je puisse accepter les réponses donc je vraiment, ne peux pas travailler dessus encore. .. –

+0

ok, iv'e marqué toute l'aide réponses complètes .. je ne sais pas pourquoi il dit 100% maintenant .. je ne les ai pas tous marquer mais je l'ai fait marquer un où jamais j'ai eu une réponse –

Répondre

3

Cela va faire ce que vous avez besoin:

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

La méthode MakeGenericType accepte un tableau params des arguments de type générique. Consultez la documentation pour plus de détails:

En outre, cet article a un bon exemple de quelque chose de semblable à ce que vous faites ici:

+0

merci man qui a fait l'affaire. –

Questions connexes