приведение примитивного типа к объекту, допускающему значение NULL

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


person eran otzap    schedule 16.07.2011    source источник
comment
мне нужно получить 15 репутации, прежде чем я смогу принимать ответы, так что я правда, пока не могу над этим работать ...   -  person eran otzap    schedule 16.07.2011
comment
хорошо, я пометил всю справку полными ответами .. я не знаю, почему сейчас написано 100% .. я не отмечал их все, но я отмечал один, где когда-либо получал ответ   -  person eran otzap    schedule 16.07.2011


Ответы (1)


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

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

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

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

person FishBasketGordo    schedule 16.07.2011