public override async Task PrefetchAsync(params string[] names) { if (names == null || names.Length == 0) { return; } var getNames = new List <string>(); foreach (string name in names.Distinct()) { if (_nameDict.ContainsKey(name) && GetCache(_nameDict[name]).IsExpired) { getNames.Add(name); } } if (getNames.Count == 0) { return; } var result = await _agent.GetNamedAsync(getNames.ToArray()).ConfigureAwait(false); foreach (var rdj in JObject.Parse("{ \"content\": " + result.Content ?? "[ ]" + " }")["content"] !.Children()) { var name = rdj["name"]?.Value <string>(); var items = rdj["items"]?.ToString(); if (name != null) { switch (name) { case nameof(Country): GetCache(_nameDict[nameof(Country)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.Country[]>(items !)); break; case nameof(USState): GetCache(_nameDict[nameof(USState)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.USState[]>(items !)); break; case nameof(Gender): GetCache(_nameDict[nameof(Gender)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.Gender[]>(items !)); break; case nameof(EyeColor): GetCache(_nameDict[nameof(EyeColor)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.EyeColor[]>(items !)); break; case nameof(PowerSource): GetCache(_nameDict[nameof(PowerSource)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.PowerSource[]>(items !)); break; case nameof(Company): GetCache(_nameDict[nameof(Company)]).SetCollection(JsonConvert.DeserializeObject <RefDataNamespace.Company[]>(items !)); break; } } } }
/// <summary> /// Prefetches all of the named <see cref="ReferenceDataBase"/> objects where not already cached or have expired. /// </summary> /// <param name="names">The list of <see cref="ReferenceDataBase"/> type names.</param> public override async Task PrefetchAsync(params string[] names) { if (names == null || names.Length == 0) { return; } var getNames = new List <string>(); if (names.Length == 1 && names[0] == ReferenceDataAgent.GetNamedAllNames) { getNames.Add(ReferenceDataAgent.GetNamedAllNames); } else { foreach (string name in names.Distinct()) { if (_nameDict.ContainsKey(name) && GetCache(_nameDict[name]).IsExpired) { getNames.Add(name); } } } if (getNames.Count == 0) { return; } var result = await _agent.GetNamedAsync(getNames.ToArray()); foreach (var rdj in JObject.Parse("{ \"content\":" + result.Content + "}")["content"].Children()) { switch (rdj["name"].Value <string>()) { case ReferenceData.Property_Gender: GetCache(_nameDict[ReferenceData.Property_Gender]).SetCollection(JsonConvert.DeserializeObject <Gender[]>(rdj["items"].ToString())); break; case ReferenceData.Property_EyeColor: GetCache(_nameDict[ReferenceData.Property_EyeColor]).SetCollection(JsonConvert.DeserializeObject <EyeColor[]>(rdj["items"].ToString())); break; case ReferenceData.Property_Company: GetCache(_nameDict[ReferenceData.Property_Company]).SetCollection(JsonConvert.DeserializeObject <Company[]>(rdj["items"].ToString())); break; } } }