public static IFieldBridge GuessType( string fieldName, System.Type fieldType, IFieldBridgeDefinition fieldBridgeDefinition, IDateBridgeDefinition dateBridgeDefinition ) { IFieldBridge bridge = null; if (fieldBridgeDefinition != null) { System.Type impl = fieldBridgeDefinition.Impl; try { object instance = Activator.CreateInstance(impl); if (instance is IFieldBridge) { bridge = (IFieldBridge) instance; } else if (instance is ITwoWayStringBridge) { bridge = new TwoWayString2FieldBridgeAdaptor((ITwoWayStringBridge) instance); } else if (instance is IStringBridge) { bridge = new String2FieldBridgeAdaptor((IStringBridge) instance); } if (fieldBridgeDefinition.Parameters.Count > 0 && instance is IParameterizedBridge) { ((IParameterizedBridge) instance).SetParameterValues(fieldBridgeDefinition.Parameters); } } catch (Exception e) { // TODO add classname throw new HibernateException("Unable to instantiate IFieldBridge for " + fieldName, e); } } else if (dateBridgeDefinition != null) { bridge = GetDateField(dateBridgeDefinition.Resolution); } else { // find in built-ins System.Type returnType = fieldType; if (IsNullable(returnType)) { returnType = returnType.GetGenericArguments()[0]; } builtInBridges.TryGetValue(returnType.Name, out bridge); if (bridge == null && returnType.IsEnum) { bridge = new TwoWayString2FieldBridgeAdaptor(new EnumBridge(returnType)); } } // TODO add classname if (bridge == null) { throw new HibernateException("Unable to guess IFieldBridge for " + fieldName); } return bridge; }
public static IFieldBridge GuessType( string fieldName, System.Type fieldType, IFieldBridgeDefinition fieldBridgeDefinition, IDateBridgeDefinition dateBridgeDefinition ) { IFieldBridge bridge = null; if (fieldBridgeDefinition != null) { System.Type impl = fieldBridgeDefinition.Impl; try { object instance = Activator.CreateInstance(impl); if (instance is IFieldBridge) { bridge = (IFieldBridge)instance; } else if (instance is ITwoWayStringBridge) { bridge = new TwoWayString2FieldBridgeAdaptor((ITwoWayStringBridge)instance); } else if (instance is IStringBridge) { bridge = new String2FieldBridgeAdaptor((IStringBridge)instance); } if (fieldBridgeDefinition.Parameters.Count > 0 && instance is IParameterizedBridge) { ((IParameterizedBridge)instance).SetParameterValues(fieldBridgeDefinition.Parameters); } } catch (Exception e) { // TODO add classname throw new HibernateException("Unable to instantiate IFieldBridge for " + fieldName, e); } } else if (dateBridgeDefinition != null) { bridge = GetDateField(dateBridgeDefinition.Resolution); } else { // find in built-ins System.Type returnType = fieldType; if (IsNullable(returnType)) { returnType = returnType.GetGenericArguments()[0]; } builtInBridges.TryGetValue(returnType.Name, out bridge); if (bridge == null && returnType.IsEnum) { bridge = new TwoWayString2FieldBridgeAdaptor(new EnumBridge(returnType)); } } // TODO add classname if (bridge == null) { throw new HibernateException("Unable to guess IFieldBridge for " + fieldName); } return(bridge); }