public static AppMetric JoinQueryMetric(AppMetricId metricId, params IAppMetricsProvider[] collections) { if (metricId == null) { throw new ArgumentNullException(nameof(metricId)); } if (collections == null || collections.Length == 0) { throw new ArgumentNullException(nameof(collections)); } AppMetric retVal = null; foreach (IAppMetricsProvider c in collections) { AppMetric cMetric = c.QueryMetric(metricId); if (cMetric != null) { if (retVal != null) { retVal = retVal.JoinWith(cMetric); } else { retVal = cMetric.Copy(); } } } return(retVal); }
private static Dictionary <AppMetricId, AppMetric> JoinMetricsFromProviders(IEnumerable <IAppMetricsProvider> collections) { Dictionary <AppMetricId, AppMetric> metrics = new Dictionary <AppMetricId, AppMetric>(); foreach (IAppMetricsProvider c in collections) { foreach (AppMetric cMetric in c.CollectMetrics()) { AppMetric cMetricToAdd = cMetric.Copy(); if (metrics.TryGetValue(cMetricToAdd.Id, out AppMetric existing)) { metrics[cMetricToAdd.Id] = existing.JoinWith(cMetricToAdd); } else { metrics[cMetricToAdd.Id] = cMetricToAdd; } } } return(metrics); }