public static T SafeConvert<T>(string s) >>>>>>{ >>>>>> return SafeConvert(s, default(T)); >>>>>>}>>>>>>
>>>>>foreach (KeyValuePair<String, String> kvp in rowValues) >>>>> { >>>>> String passedValue = kvp.Value.Trim(); >>>>> var rowValue = bookingRow[kvp.Key]; >>>>> Type columnType = ((DataColumn)bookingRow[kvp.Key]).DataType; >>>>> >>>>> var passedObject = Convert.ChangeType(passedValue, columnType); >>>>> if (passedObject.Equals(rowValue) == false) >>>>> { >>>>> String rowValueString = rowValue.ToString().Trim(); >>>>> if (rowValueString!=passedValue) // Double check to prevent cases of "" vs. " " >>>>> this.SaveToBookingHistory(booking_id, "M", kvp.Key, rowValueString, passedValue, ref messageText, ref statusCode); >>>>> } >>>>> }>>>>>
>>>>/// <summary> >>>> /// Safe convert into desired type >>>> /// http://stackoverflow.com/questions/1106974/how-can-i-convert-to-a-specific-type-in-a-generic-version-of-tryparse?rq=1 >>>> /// </summary> >>>> /// <typeparam name="T"></typeparam> >>>> /// <param name="s"></param> >>>> /// <param name="defaultValue"></param> >>>> /// <returns></returns> >>>> public static T SafeConvert<T>(String s, T defaultValue) >>>> { >>>> if (String.IsNullOrEmpty(s)) >>>> return defaultValue; >>>> return (T)Convert.ChangeType(s, typeof(T)); >>>> } >>>> >>>> public static T SafeConvert<T>(String s) >>>> { >>>> return SafeConvert(s, default(T)); >>>> }>>>>
foreach (KeyValuePair<String, String> kvp in rowValues) >>> { >>> String passedValue = kvp.Value.Trim(); >>> var rowValue = bookingRow[kvp.Key]; >>> Type columnType = ((DataColumn)bookingRow[kvp.Key]).DataType; >>> >>> var passedObject = Convert.ChangeType(passedValue, columnType); >>> if (!StringEquals(passedValue, rowValue, columnType)) >>> { >>> this.SaveToBookingHistory(booking_id, "M", kvp.Key, rowValueString, passedValue, ref messageText, ref statusCode); >>> } >>> } >>>public static bool StringEquals(string stringValue, object objectValue, Type objectType) >>>{ >>> object convertedStringValue = GetDefault(objectType); >>> if (!string.IsNullOrWhitespace(stringValue)) >>> convertedStringValue = Convert.ChangeType(stringValue, objectType); >>> >>> return object.Equals(convertedStringValue, objectValue); >>>} >>> >>>// See http://stackoverflow.com/questions/325426/programmatic-equivalent-of-defaulttype >>>public static object GetDefault(Type type) >>>{ >>> if(type.IsValueType) >>> { >>> return Activator.CreateInstance(type); >>> } >>> return null; >>>} >>>>>
>> var passedObject = Convert.ChangeType(passedValue, columnType);
>>
>>