/// <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);
        }
Beispiel #2
0
        /// <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();
        }
Beispiel #3
0
 /// <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&lt;TFilter, TResult&gt;.</returns>
 public override ISingleResultSetCommandProcessor <TFilter, TResult> BuildCommandProcessor <TFilter, TResult>(ICommandResultInfo <TFilter> mappings)
 => base.BuildCommandProcessor <TFilter, TResult>(mappings)
 .InterceptExceptions(ex => Debug.Print($"{ex.Info.CommandText}"));
Beispiel #4
0
        /// <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&lt;IDataReader, ColumnChecker, IEnumerable&lt;TResult&gt;&gt;.</returns>
        public IDeserializer ResolveDeserializer(Type resultType, ICommandResultInfo mappings)
        {
            var factory = _deserializerFactories.First(df => df.CanDeserialize(resultType));

            return(factory.BuildDeserializer(resultType, mappings.RetrieveResultSetMappings(resultType)));
        }
Beispiel #5
0
        ResolveDeserializer <TResult>(ICommandResultInfo mappings)
        {
            var factory = _deserializerFactories.First(df => df.CanDeserialize(typeof(TResult)));

            return(factory.BuildDeserializer <TResult>(mappings.RetrieveResultSetMappings(typeof(TResult))));
        }
Beispiel #6
0
 /// <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&lt;TFilter, TResult&gt;.</returns>
 public virtual IMultipleResultSetCommandProcessor <TFilter> BuildCommandProcessor <TFilter>(ICommandResultInfo <TFilter> mappings,
                                                                                             params Type[] resultTypes) =>
 new MultipleResultSetCommandProcessor <TFilter>(_deserializerResolver, mappings, resultTypes);
Beispiel #7
0
 /// <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&lt;TFilter, TResult&gt;.</returns>
 public virtual ISingleResultSetCommandProcessor <TFilter, TResult> BuildCommandProcessor <TFilter, TResult>(
     ICommandResultInfo <TFilter> mappings) =>
 new SingleResultSetCommandProcessor <TFilter, TResult>(_deserializerResolver, mappings);