(связанные с PropertyInfo SetValue and nulls)Не следует использовать FieldInfo.SetValue для установки значения ValueType на null?
Если у меня есть public class Thing { public int X; }
, а Thing o
, и FieldInfo fi
, что указывает на X
поле, почему это законно назвать fi.SetValue(o, null)
? Время выполнения устанавливает поле X
равным нулю, то есть default(int)
вместо того, чтобы жаловаться, что ValueType
не может быть установлено в null
.
Кто-нибудь знает выбор дизайна за этим поведением, которое по крайней мере от C# нарушает мой принцип наименьшего удивления?
Согласен, он должен вызывать исключение ArgumentException, по крайней мере, по документам. – leppie
Это неприятное поведение для API Reflection – Doug