private static object CreateObject(DbProviderFactory factory, ProviderSupportedClasses kindOfObject, string providerName)
        {
            switch (kindOfObject)
            {
            case ProviderSupportedClasses.DbConnection:
                return(factory.CreateConnection());

            case ProviderSupportedClasses.DbDataAdapter:
                return(factory.CreateDataAdapter());

            case ProviderSupportedClasses.DbParameter:
                return(factory.CreateParameter());

            case ProviderSupportedClasses.DbCommand:
                return(factory.CreateCommand());

            case ProviderSupportedClasses.DbCommandBuilder:
                return(factory.CreateCommandBuilder());

            case ProviderSupportedClasses.DbDataSourceEnumerator:
                return(factory.CreateDataSourceEnumerator());

            case ProviderSupportedClasses.CodeAccessPermission:
                return(factory.CreatePermission(PermissionState.None));
            }
            throw new InternalException(string.Format(CultureInfo.CurrentCulture, "Cannot create object of provider class identified by enum {0} for provider {1}", new object[] { Enum.GetName(typeof(ProviderSupportedClasses), kindOfObject), providerName }));
        }
        private static object CreateObject(DbProviderFactory factory, ProviderSupportedClasses kindOfObject, string providerName)
        {
            switch (kindOfObject)
            {
                case ProviderSupportedClasses.DbConnection:
                    return factory.CreateConnection();

                case ProviderSupportedClasses.DbDataAdapter:
                    return factory.CreateDataAdapter();

                case ProviderSupportedClasses.DbParameter:
                    return factory.CreateParameter();

                case ProviderSupportedClasses.DbCommand:
                    return factory.CreateCommand();

                case ProviderSupportedClasses.DbCommandBuilder:
                    return factory.CreateCommandBuilder();

                case ProviderSupportedClasses.DbDataSourceEnumerator:
                    return factory.CreateDataSourceEnumerator();

                case ProviderSupportedClasses.CodeAccessPermission:
                    return factory.CreatePermission(PermissionState.None);
            }
            throw new InternalException(string.Format(CultureInfo.CurrentCulture, "Cannot create object of provider class identified by enum {0} for provider {1}", new object[] { Enum.GetName(typeof(ProviderSupportedClasses), kindOfObject), providerName }));
        }
 public static DbProviderFactory GetFactoryFromType(Type type, ProviderSupportedClasses kindOfObject)
 {
     if (type == null)
     {
         throw new ArgumentNullException("type");
     }
     if (providerData.Matches(type))
     {
         return(providerData.CachedFactory);
     }
     EnsureFactoryTable();
     foreach (DataRow row in factoryTable.Rows)
     {
         DbProviderFactory factory      = DbProviderFactories.GetFactory(row);
         string            providerName = (string)row[PROVIDER_NAME];
         object            obj2         = CreateObject(factory, kindOfObject, providerName);
         if (type.Equals(obj2.GetType()))
         {
             providerData.Initialize(factory, (string)row[PROVIDER_INVARIANT_NAME], (string)row[PROVIDER_NAME], type);
             return(factory);
         }
     }
     throw new InternalException(string.Format(CultureInfo.CurrentCulture, "Unable to find DbProviderFactory for type {0}", new object[] { type.ToString() }));
 }
 public static DbProviderFactory GetFactoryFromType(Type type, ProviderSupportedClasses kindOfObject)
 {
     if (type == null)
     {
         throw new ArgumentNullException("type");
     }
     if (providerData.Matches(type))
     {
         return providerData.CachedFactory;
     }
     EnsureFactoryTable();
     foreach (DataRow row in factoryTable.Rows)
     {
         DbProviderFactory factory = DbProviderFactories.GetFactory(row);
         string providerName = (string) row[PROVIDER_NAME];
         object obj2 = CreateObject(factory, kindOfObject, providerName);
         if (type.Equals(obj2.GetType()))
         {
             providerData.Initialize(factory, (string) row[PROVIDER_INVARIANT_NAME], (string) row[PROVIDER_NAME], type);
             return factory;
         }
     }
     throw new InternalException(string.Format(CultureInfo.CurrentCulture, "Unable to find DbProviderFactory for type {0}", new object[] { type.ToString() }));
 }