Yesterday I had a problem determining whether a supplied type was of the type Nullable. Here is the solution:

Type mt = suppliedVar.GetType();

if(mt.IsGenericType && mt.GetGenericTypeDefinition() ==
   typeof(Nullable<>)) && mt.GetGenericArguments().Length>0)
  {
      if(mt.GetGenericArguments()[0].IsEnum) {
      // Type is a Nullable
   }
}