приведение примитивного типа к обнуляемому объекту - PullRequest
3 голосов
/ 16 июля 2011

У меня есть объект, который я создаю из сущности (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 в виде обнуляемого типа, чтобы *Значение 1005 * в столбцах будет равно int?, если, например, какое-то свойство имеет int для своего значения PropertyType.

1 Ответ

3 голосов
/ 16 июля 2011

Это будет делать то, что вам нужно:

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

Метод MakeGenericType принимает массив params аргументов универсального типа. Смотрите документацию для более подробной информации:

Кроме того, в этой статье есть хороший пример того, что вы делаете здесь:

...