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