public static Dictionary <string, ServiceDiscovery.Resolved> Parse(Configuration.Config config) { return(config.AsEnumerable() .Select(pair => (pair.Key, config.GetConfig(pair.Key))) .ToDictionary(pair => pair.Key, pair => { var(serviceName, full) = pair; var endpoints = full.GetStringList("endpoints"); var resolvedTargets = endpoints.Select(e => { var values = e.Split(':'); return new ServiceDiscovery.ResolvedTarget(values[0], int.TryParse(values.Skip(1).FirstOrDefault(), out var i) ? i : default(int?)); }).ToArray(); return new ServiceDiscovery.Resolved(serviceName, resolvedTargets); }));