将原语类型强制转换为可空对象

本文关键字:对象 转换 原语 类型 | 更新日期: 2023-09-27 18:02:22

我有一个对象,我创建了一个实体(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?,例如,某些属性具有intPropertyType价值。

将原语类型强制转换为可空对象

这将满足您的需求:

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

MakeGenericType方法接受泛型类型参数的params数组。查看文档了解更多细节:

  • http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx

此外,本文还有一个很好的例子,与您在这里所做的类似:

  • http://msdn.microsoft.com/en-us/library/b8ytshk6.aspx