/// <summary>
        /// Gets a file engine.
        /// </summary>
        /// <typeparam name="TEntity">The type of the t entity.</typeparam>
        /// <param name="engineFactory">The engine factory.</param>
        /// <param name="handleEntryReadError">The error handler.</param>
        /// <returns>A new file engine.</returns>
        public static IFlatFileEngine GetEngine <TEntity>(
            this IFlatFileEngineFactory <IFixedLengthLayoutDescriptor, IFixedFieldSettingsContainer> engineFactory,
            FileReadErrorHandler?handleEntryReadError = null)
            where TEntity : class, new()
        {
            var descriptorProvider = new FixedLayoutDescriptorProvider();
            var descriptor         = descriptorProvider.GetDescriptor <TEntity>();

            return(engineFactory.GetEngine(descriptor, handleEntryReadError));
        }
        /// <summary>
        /// Gets a file engine.
        /// </summary>
        /// <param name="engineFactory">The engine factory.</param>
        /// <param name="recordTypes">The record types.</param>
        /// <param name="typeSelectorFunc">The type selector function.</param>
        /// <param name="handleEntryReadError">The error handler.</param>
        /// <returns>A new file engine.</returns>
        public static IFlatFileMultiEngine GetEngine(
            this FixedLengthFileEngineFactory engineFactory,
            IEnumerable <Type> recordTypes,
            Func <string, int, Type> typeSelectorFunc,
            FileReadErrorHandler?handleEntryReadError = null)
        {
            var descriptorProvider = new FixedLayoutDescriptorProvider();
            var descriptors        = recordTypes.Select(type => descriptorProvider.GetDescriptor(type)).ToList();

            return(engineFactory.GetEngine(descriptors, typeSelectorFunc, handleEntryReadError));
        }