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);
>
>