Type t = p.PropertyType; if (typeof(decimal) == t || typeof(decimal?) == t) { ret = decimal.Parse(v); } else if (typeof(int) == t || typeof(int?) == t) { ret = int.Parse(v); } else if (typeof(long) == t || typeof(long?) == t) { ret = long.Parse(v); } else if (typeof(DateTime) == t) { ret = DateTime.Parse(v); } else if (typeof(bool) == t) { } else { ret = v; }