private ITypeHandler ResolveTypeHandler(TypeHandlerFactory typeHandlerFactory, Type parameterClassType, string propertyName, string propertyType, string dbType)
        {
            if (parameterClassType == null)
            {
                return(typeHandlerFactory.GetUnkownTypeHandler());
            }
            if (typeof(IDictionary).IsAssignableFrom(parameterClassType))
            {
                if ((propertyType == null) || (propertyType.Length == 0))
                {
                    return(typeHandlerFactory.GetUnkownTypeHandler());
                }
                try
                {
                    Type type = TypeUtils.ResolveType(propertyType);
                    return(typeHandlerFactory.GetTypeHandler(type, dbType));
                }
                catch (Exception exception)
                {
                    throw new ConfigurationException("Error. Could not set TypeHandler.  Cause: " + exception.Message, exception);
                }
            }
            if (typeHandlerFactory.GetTypeHandler(parameterClassType, dbType) != null)
            {
                return(typeHandlerFactory.GetTypeHandler(parameterClassType, dbType));
            }
            Type memberTypeForGetter = ObjectProbe.GetMemberTypeForGetter(parameterClassType, propertyName);

            return(typeHandlerFactory.GetTypeHandler(memberTypeForGetter, dbType));
        }
Example #2
0
        /// <summary>
        /// Resolve TypeHandler
        /// </summary>
        /// <param name="parameterClassType"></param>
        /// <param name="propertyName"></param>
        /// <param name="propertyType"></param>
        /// <param name="dbType"></param>
        /// <param name="typeHandlerFactory"></param>
        /// <returns></returns>
        private ITypeHandler ResolveTypeHandler(TypeHandlerFactory typeHandlerFactory,
                                                Type parameterClassType, string propertyName,
                                                string propertyType, string dbType)
        {
            ITypeHandler handler = null;

            if (parameterClassType == null)
            {
                handler = typeHandlerFactory.GetUnkownTypeHandler();
            }
            else if (typeof(IDictionary).IsAssignableFrom(parameterClassType))
            {
                if (propertyType == null || propertyType.Length == 0)
                {
                    handler = typeHandlerFactory.GetUnkownTypeHandler();
                }
                else
                {
                    try
                    {
                        Type typeClass = TypeUtils.ResolveType(propertyType);
                        handler = typeHandlerFactory.GetTypeHandler(typeClass, dbType);
                    }
                    catch (Exception e)
                    {
                        throw new ConfigurationException("Error. Could not set TypeHandler.  Cause: " + e.Message, e);
                    }
                }
            }
            else if (typeHandlerFactory.GetTypeHandler(parameterClassType, dbType) != null)
            {
                handler = typeHandlerFactory.GetTypeHandler(parameterClassType, dbType);
            }
            else
            {
                Type typeClass = ObjectProbe.GetMemberTypeForGetter(parameterClassType, propertyName);
                handler = typeHandlerFactory.GetTypeHandler(typeClass, dbType);
            }

            return(handler);
        }