protected AbstractCompositeDataProvider(string databaseName, [NotNull] params DataProvider[] providers) { Assert.ArgumentNotNull(providers, nameof(providers)); DatabaseName = databaseName; _ReadOnlyProviders.AddRange(providers.OfType <ReadOnlyDataProvider>()); _HeadProvider = providers.Single(x => !(x is ReadOnlyDataProvider)); _HeadProviderEx = (IDataProviderEx)HeadProvider; }
public void AddDataProvider([NotNull] DataProvider dataProvider) { Assert.ArgumentNotNull(dataProvider, nameof(dataProvider)); lock (_ReadOnlyProviders) { var readOnlyDataProvider = dataProvider as ReadOnlyDataProvider; if (readOnlyDataProvider == null) { Assert.IsNull(_HeadProvider, "The head provider is already defined"); Log.Info($"Add [{DatabaseName}] HEAD data provider: {dataProvider.GetType().FullName}", this); _HeadProvider = dataProvider; _HeadProviderEx = (IDataProviderEx)dataProvider; } else { Log.Info($"Add [{DatabaseName}] read-only data provider: {dataProvider.GetType().FullName}", this); _ReadOnlyProviders.Add(readOnlyDataProvider); } } }