From: Owen R. <exo...@us...> - 2006-08-03 06:43:41
|
Update of /cvsroot/netreflector/NetReflector/src/NetReflector/util In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv5993/src/NetReflector/util Modified Files: ReflectorMember.cs ReflectorTypeConverter.cs Log Message: CCNET-726: fixing exception handling for type conversion to provide a more helpful error message Index: ReflectorMember.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/util/ReflectorMember.cs,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ReflectorMember.cs 14 Apr 2005 17:33:21 -0000 1.5 --- ReflectorMember.cs 3 Aug 2006 06:43:24 -0000 1.6 *************** *** 25,38 **** protected object ConvertToMemberType(object value) { ! try ! { ! return new ReflectorTypeConverter().Convert(MemberType, value); ! } ! catch (Exception ex) ! { ! throw new NetReflectorException(String.Format ! ("Cannot set reflected member '{0}' because of inconvertible types: {1} -> {2}", ! MemberName, value.GetType(), MemberType), ex); ! } } --- 25,29 ---- protected object ConvertToMemberType(object value) { ! return new ReflectorTypeConverter().Convert(MemberType, value); } *************** *** 58,62 **** public ReflectorProperty(PropertyInfo propertyInfo) : base() { ! this.info = propertyInfo; } --- 49,53 ---- public ReflectorProperty(PropertyInfo propertyInfo) : base() { ! info = propertyInfo; } *************** *** 80,84 **** { string msg = string.Format(@"Unable to assign value ""{0}"" to member ""{1}"".", value, MemberName); ! throw new NetReflectorException(msg, ex.InnerException); } } --- 71,75 ---- { string msg = string.Format(@"Unable to assign value ""{0}"" to member ""{1}"".", value, MemberName); ! throw new NetReflectorException(msg, ex.InnerException); } } *************** *** 96,100 **** public ReflectorField(FieldInfo fieldInfo) : base() { ! this.info = fieldInfo; } --- 87,91 ---- public ReflectorField(FieldInfo fieldInfo) : base() { ! info = fieldInfo; } *************** *** 111,115 **** public override void SetValue(object instance, object value) { ! info.SetValue(instance, ConvertToMemberType(value)); } --- 102,114 ---- public override void SetValue(object instance, object value) { ! try ! { ! info.SetValue(instance, ConvertToMemberType(value)); ! } ! catch (TargetInvocationException ex) ! { ! string msg = string.Format(@"Unable to assign value ""{0}"" to field ""{1}"".", value, MemberName); ! throw new NetReflectorException(msg, ex.InnerException); ! } } Index: ReflectorTypeConverter.cs =================================================================== RCS file: /cvsroot/netreflector/NetReflector/src/NetReflector/util/ReflectorTypeConverter.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ReflectorTypeConverter.cs 16 Nov 2004 04:55:38 -0000 1.1 --- ReflectorTypeConverter.cs 3 Aug 2006 06:43:24 -0000 1.2 *************** *** 14,18 **** { if (IsCompatibleType(to, from)) return from; ! return TypeDescriptor.GetConverter(to).ConvertFrom(from); } } --- 14,26 ---- { if (IsCompatibleType(to, from)) return from; ! try ! { ! return TypeDescriptor.GetConverter(to).ConvertFrom(from); ! } ! catch (Exception ex) ! { ! throw new NetReflectorException(string.Format ! ("Cannot convert from type {0} to {1} for object with value: \"{2}\"", from.GetType(), to, from), ex); ! } } } |