/// <summary>
        /// Enables the dynamic registration of a new DBFactory tat can be used for a specific provider
        /// </summary>
        /// <param name="imp"></param>
        public static void RegisterImplementation(DBProviderImplementation imp)
        {
            if (null == imp)
            {
                throw new ArgumentNullException("imp");
            }

            RegisterImplementation(imp.ProviderName, imp);
        }
        /// <summary>
        /// Enables the dynamic registration of a new DBFactory that can be used with a specific provider
        /// </summary>
        /// <param name="providername">The name of the provider that the DBFactory is registered against</param>
        /// <param name="imp">The factory to register</param>
        public static void RegisterImplementation(string providername, DBProviderImplementation imp)
        {
            if (null == imp)
            {
                throw new ArgumentNullException("factory");
            }

            if (string.IsNullOrEmpty(providername))
            {
                throw new ArgumentNullException("providername");
            }

            lock (_lock)
            {
                if (ConfiguredImplementations.Contains(providername))
                {
                    ConfiguredImplementations.Remove(providername);
                }

                ConfiguredImplementations.Add(providername, imp);
            }
        }