public StatisticsProviderManager(IProviderRuntime runtime, LoadedProviderTypeLoaders loadedProviderTypeLoaders, ILoggerFactory loggerFactory) { providerKind = ProviderCategoryConfiguration.STATISTICS_PROVIDER_CATEGORY_NAME; this.runtime = runtime; this.loggerFactory = loggerFactory; statisticsProviderLoader = new ProviderLoader <IProvider>(loadedProviderTypeLoaders, loggerFactory); }
public ProviderLoader(LoadedProviderTypeLoaders loadedProviderTypeLoaders, ILoggerFactory loggerFactory) { logger = loggerFactory.CreateLogger <ProviderLoader <TProvider> >(); this.loggerFactory = loggerFactory; providers = new Dictionary <string, TProvider>(); this.loadedProviderTypeLoaders = loadedProviderTypeLoaders; }
public ProviderTypeLookup(ILoggerFactory loggerFactory) { this.lookup = new Dictionary <string, Type>(); var logger = loggerFactory.CreateLogger <LoadedProviderTypeLoaders>(); var loader = new LoadedProviderTypeLoaders(logger); ProviderTypeLoader.AddProviderTypeManager(t => typeof(IProvider).IsAssignableFrom(t), RegisterProviderType, loader, loggerFactory); }
private void ProcessLoadedAssemblies(LoadedProviderTypeLoaders loadedProviderTypeLoadersSingleton) { // Walk through already-loaded assemblies. // We do this under the lock to avoid race conditions when an assembly is added // while a type manager is initializing. foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { ProcessAssemblyLocally(assembly); } }
public ProviderLoader(LoadedProviderTypeLoaders loadedProviderTypeLoaders) { logger = LogManager.GetLogger("ProviderLoader/" + typeof(TProvider).Name, LoggerType.Runtime); providers = new Dictionary <string, TProvider>(); this.loadedProviderTypeLoaders = loadedProviderTypeLoaders; }
public static void AddProviderTypeManager(Func <Type, bool> condition, Action <Type> action, LoadedProviderTypeLoaders loadedProviderTypeLoadersSingleton) { var manager = new ProviderTypeLoader(condition, action); lock (loadedProviderTypeLoadersSingleton.Managers) { loadedProviderTypeLoadersSingleton.Managers.Add(manager); } manager.ProcessLoadedAssemblies(loadedProviderTypeLoadersSingleton); }