//TODO GetDbProviderClasses private static void InitializeDbProviderFactoryIfNeeded() { if (ctx == null) { lock (typeof(DbProviderFactory)) { if (ctx == null) { try { ConfigurableResourceLoader loader = new ConfigurableResourceLoader(DBPROVIDER_ADDITIONAL_RESOURCE_NAME); if (loader.GetResource(DBPROVIDER_ADDITIONAL_RESOURCE_NAME).Exists) { if (log.IsDebugEnabled) { log.Debug("Loading additional DbProviders from " + DBPROVIDER_ADDITIONAL_RESOURCE_NAME); } ctx = new XmlApplicationContext(DBPROVIDER_CONTEXTNAME, true, new string[] { DBPROVIDER_DEFAULT_RESOURCE_NAME, DBPROVIDER_ADDITIONAL_RESOURCE_NAME }); } else { ctx = new XmlApplicationContext(DBPROVIDER_CONTEXTNAME, true, new string[] { DBPROVIDER_DEFAULT_RESOURCE_NAME }); } if (log.IsInfoEnabled) { var dbProviderNames = ctx.GetObjectNames <IDbProvider>(); log.Info( $"{dbProviderNames.Count} DbProviders Available. [{StringUtils.CollectionToCommaDelimitedString(dbProviderNames)}]"); } } catch (Exception e) { log.Error("Error processing " + DBPROVIDER_DEFAULT_RESOURCE_NAME, e); throw; } } } } }