/// <summary> /// Get the parameter generator method for a command and the type used for the parameter. /// </summary> /// <param name="command">The command to analyze.</param> /// <param name="type">The type of the parameter.</param> /// <returns>The command generator.</returns> public static Action<IDbCommand, object> GetOutputParameterConverter(IDbCommand command, Type type) { QueryIdentity identity = new QueryIdentity(command, type); // try to get the deserializer. if not found, create one. return _deserializers.GetOrAdd(identity, key => CreateClassOutputParameterConverter(command, type)); }
/// <summary> /// Get the parameter generator method for a command and the type used for the parameter. /// </summary> /// <param name="command">The command to analyze.</param> /// <param name="type">The type of the parameter.</param> /// <returns>The command generator.</returns> public static Action<IDbCommand, object> GetInputParameterGenerator(IDbCommand command, Type type) { QueryIdentity identity = new QueryIdentity(command, type); // try to get the deserializer. if not found, create one. return _serializers.GetOrAdd( identity, key => { if (type.IsSubclassOf(typeof(DynamicObject))) return CreateDynamicInputParameterGenerator(command); else if (type == typeof(Dictionary<string, object>)) return CreateDynamicInputParameterGenerator(command); else return CreateClassInputParameterGenerator(command, type); }); }