If I have something like:
object value = null;
Foo foo = new Foo();
PropertyInfo property = Foo.GetProperties().Single(p => p.Name == "IntProperty");
property.SetValue(foo, value, null);
Then foo.IntProperty
gets set to 0
, even though value = null
. It appears it's doing somemething like IntProperty = default(typeof(int))
. I would like to throw an InvalidCastException
if IntProperty
is not a "nullable" type (Nullable<> or reference). I'm using Reflection, so I don't know the type ahead of time. How would I go about doing this?