/// <summary> /// Initializes a new instance of the <see cref="SingleResultSetCommandProcessor{TFilter, TResult}" /> class. /// </summary> /// <param name="deserializerResolver">The deserializer resolver.</param> /// <param name="mappings">The mappings.</param> public SingleResultSetCommandProcessor( IDeserializerResolver deserializerResolver, ICommandResultInfo <TFilter> mappings) { CommandResultInfo = mappings; CompiledMapping = deserializerResolver .ResolveDeserializer <TResult>(mappings); }
/// <summary> /// Initializes a new instance of the /// <see cref="MultipleResultSetCommandProcessor{TFilter}" /> /// class. /// </summary> /// <param name="deserializerResolver">The deserializer resolver.</param> /// <param name="commandResultInfo">The CommandBuilder result information.</param> /// <param name="resultTypes">The result types.</param> public MultipleResultSetCommandProcessor(IDeserializerResolver deserializerResolver, ICommandResultInfo <TFilter> commandResultInfo, Type[] resultTypes) { CommandResultInfo = commandResultInfo; _deserializerResolver = deserializerResolver; _mappers = resultTypes .Select(t => _deserializerResolver.ResolveDeserializer(t, commandResultInfo)) .ToArray(); }
/// <summary> /// Builds the command processor. /// </summary> /// <typeparam name="TFilter">The type of the filter.</typeparam> /// <typeparam name="TResult">The type of the result.</typeparam> /// <param name="mappings">The mappings.</param> /// <param name="name">The name.</param> /// <returns>INoResultCommandProcessor<TFilter, TResult>.</returns> public override ISingleResultSetCommandProcessor <TFilter, TResult> BuildCommandProcessor <TFilter, TResult>(ICommandResultInfo <TFilter> mappings) => base.BuildCommandProcessor <TFilter, TResult>(mappings) .InterceptExceptions(ex => Debug.Print($"{ex.Info.CommandText}"));
/// <summary> /// Retrieves and compiles, if necessary, an appropriate type deserializer. /// </summary> /// <param name="resultType">Type of the result.</param> /// <param name="mappings">The mappings.</param> /// <returns>Func<IDataReader, ColumnChecker, IEnumerable<TResult>>.</returns> public IDeserializer ResolveDeserializer(Type resultType, ICommandResultInfo mappings) { var factory = _deserializerFactories.First(df => df.CanDeserialize(resultType)); return(factory.BuildDeserializer(resultType, mappings.RetrieveResultSetMappings(resultType))); }
ResolveDeserializer <TResult>(ICommandResultInfo mappings) { var factory = _deserializerFactories.First(df => df.CanDeserialize(typeof(TResult))); return(factory.BuildDeserializer <TResult>(mappings.RetrieveResultSetMappings(typeof(TResult)))); }
/// <summary> /// Builds the command processor. /// </summary> /// <typeparam name="TFilter">The type of the filter.</typeparam> /// <param name="mappings">The mappings.</param> /// <param name="resultTypes">The result types.</param> /// <returns>INoResultCommandProcessor<TFilter, TResult>.</returns> public virtual IMultipleResultSetCommandProcessor <TFilter> BuildCommandProcessor <TFilter>(ICommandResultInfo <TFilter> mappings, params Type[] resultTypes) => new MultipleResultSetCommandProcessor <TFilter>(_deserializerResolver, mappings, resultTypes);
/// <summary> /// Builds the command processor. /// </summary> /// <typeparam name="TFilter">The type of the filter.</typeparam> /// <typeparam name="TResult">The type of the result.</typeparam> /// <param name="mappings">The mappings.</param> /// <returns>INoResultCommandProcessor<TFilter, TResult>.</returns> public virtual ISingleResultSetCommandProcessor <TFilter, TResult> BuildCommandProcessor <TFilter, TResult>( ICommandResultInfo <TFilter> mappings) => new SingleResultSetCommandProcessor <TFilter, TResult>(_deserializerResolver, mappings);