PropertyInfo SetValue et les valeurs null

Si j'ai quelque chose comme:

object value = null;
Foo foo = new Foo();

PropertyInfo property = Foo.GetProperties().Single(p => p.Name == "IntProperty");
property.SetValue(foo, value, null);

Puis foo.IntProperty obtient mis à 0, même si value = null. Il semble qu'il fait quelque chose comme IntProperty = default(typeof(int)). Je voudrais jeter un InvalidCastException si IntProperty n'est pas un "nullable" type (Nullable<> ou de référence). Je suis l'aide de la Réflexion, donc je ne connais pas le type à l'avance. Comment pourrais-je aller sur le faire?