private void BuildDictionaries() { using (TimerProfilerFacade.CreateTimerProfiler("Adding supported types")) { foreach (string providerName in _dataProviderNames) { IEnumerable <Type> types = DataProviderPluginFacade.GetSupportedInterfaces(providerName); bool writeableProvider = DataProviderPluginFacade.IsWriteableProvider(providerName); foreach (Type type in types) { AddType(type, providerName, writeableProvider); } if (DataProviderPluginFacade.IsGeneratedTypesProvider(providerName)) { IEnumerable <Type> generatedTypes = DataProviderPluginFacade.GetGeneratedInterfaces(providerName); foreach (Type type in generatedTypes) { AddType(type, providerName, writeableProvider); if (!_generatedInterfaceTypes.Contains(type)) { _generatedInterfaceTypes.Add(type); } } } } } using (TimerProfilerFacade.CreateTimerProfiler("Adding known interfaces")) { foreach (string providerName in _dataProviderNames) { if (DataProviderPluginFacade.IsDynamicProvider(providerName)) { IEnumerable <Type> knownTypes = DataProviderPluginFacade.GetKnownInterfaces(providerName); foreach (Type knownType in knownTypes) { if (!_interfaceTypeToReadableProviderNames.Keys.Contains(knownType)) { List <string> providerNames; if (!_knownInterfaceTypeToDynamicProviderNames.TryGetValue(knownType, out providerNames)) { providerNames = new List <string>(); _knownInterfaceTypeToDynamicProviderNames.Add(knownType, providerNames); if (RuntimeInformation.IsDebugBuild) { Log.LogVerbose("DataProviderRegistry", "Adding known IData interface: {0}", knownType); } } providerNames.Add(providerName); } } } } } }