示例#1
0
        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;
                }
            }
        }