/// <summary>
        ///     Initializes a new instance of the <see cref="CachingTableDataLoaderFactory" />
        ///     class.
        /// </summary>
        /// <param name="wrappedDataLoader"> The wrapped data loader. </param>
        /// <param name="latch"> The latch that locks the data loader configuration. </param>
        /// <param name="dataStore"> The store that contains the cached data. </param>
        internal CachingTableDataLoaderFactory(
            IDataLoader wrappedDataLoader,
            IDataLoaderConfigurationLatch latch,
            ICachingTableDataLoaderStore dataStore)
        {
            if (wrappedDataLoader == null)
            {
                throw new ArgumentNullException("wrappedDataLoader");
            }

            if (dataStore == null)
            {
                throw new ArgumentNullException("dataStoreProxy");
            }

            this.wrappedDataLoader = wrappedDataLoader;
            this.latch             = latch;
            this.dataStore         = dataStore;
        }
        /// <summary>
        ///     Initializes a new instance of the <see cref="CachingTableDataLoaderFactory" /> 
        ///     class.
        /// </summary>
        /// <param name="wrappedDataLoader"> The wrapped data loader. </param>
        /// <param name="latch"> The latch that locks the data loader configuration. </param>
        /// <param name="dataStore"> The store that contains the cached data. </param>
        internal CachingTableDataLoaderFactory(
            IDataLoader wrappedDataLoader,
            IDataLoaderConfigurationLatch latch,
            ICachingTableDataLoaderStore dataStore)
        {
            if (wrappedDataLoader == null)
            {
                throw new ArgumentNullException("wrappedDataLoader");
            }

            if (dataStore == null)
            {
                throw new ArgumentNullException("dataStoreProxy");
            }

            this.wrappedDataLoader = wrappedDataLoader;
            this.latch = latch;
            this.dataStore = dataStore;
        }