public static object GetDefault(Type t) > { > if (t.IsValueType) > { > return Activator.CreateInstance(t); > } > return null; > }then:
var passedObject = SafeConvert(passedValue, GetDefault(columnType));>
>>> foreach (KeyValuePair<String, String> kvp in rowValues) >>> { >>> String passedValue = kvp.Value; >>> var columnValue = bookingRow[kvp.Key]; >>> Type columnType = ((DataColumn)bookingRow[kvp.Key]).DataType; >>> >>> var passedObject = Convert.ChangeType(passedValue, columnType); >>> if (passedObject.Equals(columnValue) == false) >>> { >>> String cColumnValue = columnValue.ToString().Trim(); >>> if (cColumnValue!=passedValue) // Double check to prevent cases of "" vs. " " >>> this.SaveToBookingHistory(booking_id, "M", kvp.Key, cColumnValue, passedValue, ref messageText, ref statusCode); >>> } >>> }>>
var passedObject = SafeConvert<object>(passedValue, GetDefault(columnType));
so passedValue would be boxed as an object instead of converted to the appropriate type, and the comparison would still fail.