2 namespace System.Runtime.Serialization
4 public class CodeInterpreter
7 internal static object ConvertValue(object arg, Type source, Type target)
9 return InternalConvert(arg, source, target, false);
13 static bool CanConvert (TypeCode typeCode)
17 case TypeCode.Boolean:
34 static object InternalConvert(object arg, Type source, Type target, bool isAddress)
39 if (target.IsValueType)
41 if (source.IsValueType)
43 if (CanConvert (Type.GetTypeCode(target)))
44 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.NoConversionPossibleTo, DataContract.GetClrTypeFullName(target))));
48 else if (source.IsAssignableFrom(target))
51 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));
53 else if (target.IsAssignableFrom(source))
55 else if (source.IsAssignableFrom(target))
57 else if (target.IsInterface || source.IsInterface)
60 throw System.Runtime.Serialization.DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.IsNotAssignableFrom, DataContract.GetClrTypeFullName(target), DataContract.GetClrTypeFullName(source))));