2010-05-08 3 views
1

Хорошо, им все же немного новичок в использовании типов с нулевым значением.Nullables? Обнаружение их

Я пишу отражающий объект ходока для моего проекта, im, до которого я установил значение отраженного свойства со значением, которое я получил из отраженного свойства.

Значение, которое я получил, все еще находится в форме object, и это меня осенило, так как я хочу, чтобы мой объект-ходок возвращал значение null, когда он не мог что-то найти (я думал о том, чтобы выбрасывать исключение, но я хочу это с мягкой ошибкой, когда что-то не так).

В любом случае, некоторые из значений im устанавливают/получают decimalbool и т. Д., Поэтому мне стало ясно, что я должен просто НЕ устанавливать значение, не равное нулю, но я понял, что я прямо не знаю, как рассказать decimal от decimal?

Достаточно ли нажать клавишу, если тип свойства im наследуется от ValueType?

+0

Я не могу сказать, что вы просите, но вы должны знать, что 'object' никогда не будет' int? 'Или' decimal? '. Это будет просто «null», если ваш «Nullable <>» не имеет значения. – Gabe

ответ

6

Следующий код покажет вам, является ли обнуляемым или нет типа:

private bool IsNullableType(Type theType) 
{ 
    return theType.IsGenericType && 
      theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)); 
} 
+1

Как насчет "return Nullable.GetUnderlyingType (theType)! = Null;' "вместо этого? http://msdn.microsoft.com/en-us/library/system.nullable.getunderlyingtype.aspx – LukeH

+0

@ Luke - Это тоже сработает. – ChrisF

0

От MSDN:

Обнуляемых типов являются экземплярами System.Nullable<T> структуры.

Смежные вопросы