Вы не можете сделать это в коде отражения, потому что в коде отражения вы говорите о object
, и там нет такой вещи , как в штучной упаковке Nullable<T>
- это либо коробочное базовое значение, или null
.
Если вы знаете фактический тип, вы можете использовать конструктор для создания переносимого значения, но оно должно быть назначено только типизированному полю / переменной, Nullable<T>
- не object
- иначе CLI снова развернет его.
Однако, по той же причине, вам не нужно оборачивать при использовании отражения; любой код типа SetValue
примет object
и будет делать правильные вещи; независимо от того, является ли это null
или базовым значением в штучной упаковке, оно будет обработано правильно.
По сути, CLI имеет особую обработку при упаковке и распаковке Nullable<T>
, что делает вопрос недействительным.