/// <summary> /// Construct experimentation service object using initializer object. /// </summary> /// <param name="initializer"></param> public ExperimentationService(ExperimentationServiceInitializer initializer) { CodeContract.RequiresArgumentNotNull <ExperimentationServiceInitializer>(initializer, "initializer"); initializer.FillWithDefaults(); telemetry = initializer.ExperimentationTelemetry; filterProvider = initializer.ExperimentationFilterProvider; flightsProvider = initializer.FlightsProvider; setFlightsProvider = initializer.SetFlightsProvider; flightsProvider.FlightsUpdated += OnFlightsUpdated; SetFlightsTelemetry(); }
public MasterFlightsProvider(IEnumerable <IFlightsProvider> inclusiveFlightsProviders, IEnumerable <IFlightsProvider> exclusiveFlightsProviders, IFlightsProvider shippedFlightsProvider, IExperimentationOptinStatusReader optinStatusReader) { CodeContract.RequiresArgumentNotNull <IEnumerable <IFlightsProvider> >(inclusiveFlightsProviders, "inclusiveFlightsProviders"); CodeContract.RequiresArgumentNotNull <IEnumerable <IFlightsProvider> >(exclusiveFlightsProviders, "exclusiveFlightsProviders"); CodeContract.RequiresArgumentNotNull <IFlightsProvider>(shippedFlightsProvider, "shippedFlightsProvider"); CodeContract.RequiresArgumentNotNull <IExperimentationOptinStatusReader>(optinStatusReader, "optinStatusReader"); this.exclusiveFlightsProviders = exclusiveFlightsProviders; this.inclusiveFlightsProviders = inclusiveFlightsProviders; this.shippedFlightsProvider = shippedFlightsProvider; ForAllProviders(delegate(IFlightsProvider provider) { provider.FlightsUpdated += OnProviderFlightsUpdated; }); isUserOptedIn = optinStatusReader.IsOptedIn; }