Отражение и Nullable<T>
немного боли; отражение использует object
, а Nullable<T>
имеет специальные правила упаковки / распаковки для object
. Таким образом, к тому времени, когда у вас есть object
, это больше не a Nullable<T>
- это либо null
, либо само значение .
т.е.
int? a = 123, b = null;
object c = a; // 123 as a boxed int
object d = b; // null
Иногда это немного сбивает с толку, и обратите внимание, что вы не можете получить оригинал T
из пустой Nullable<T>
, которая была упакована, так как все, что у вас есть, это null
.