/// <summary> /// Converts the supplied value to a base type using the corresponding FudgeFieldType definition. The supplied .NET type /// is resolved to a registered FudgeFieldType. The <c>ConvertValueFrom</c> method on the registered type is then used /// to convert the value. /// </summary> /// <param name="value">value to convert</param> /// <param name="type">.NET target type</param> /// <returns>the converted value</returns> public object ConvertType(object value, Type type) { if (value == null) { return(null); } if (value.GetType() == type) { return(value); } if (!type.IsAssignableFrom(value.GetType())) { FudgeFieldType fieldType = typeDictionary.GetByCSharpType(type); if (fieldType == null) { throw new InvalidCastException("No registered field type for " + type.Name); } value = fieldType.ConvertValueFrom(value); } return(value); }