示例#1
0
        private RawDataContainer AddAdditionalParameters(IReadOnlyList <BasicInfo> data)
        {
            var container = new RawDataContainer(data);

            switch (data[0])
            {
            case TmdbMovieInfo _:
            {
                if (_repositories.TryGetValue(typeof(TmdbMovieInfo),
                                              out IDataRepository repository))
                {
                    container.AddParameter(
                        nameof(TmdbMovieInfo.VoteCount),
                        GetAdditionalInfoInt32(repository, "vote_count")
                        );
                    container.AddParameter(
                        nameof(TmdbMovieInfo.VoteAverage),
                        GetAdditionalInfoDouble(repository, "vote_average")
                        );
                    container.AddParameter(
                        nameof(TmdbMovieInfo.Popularity),
                        GetAdditionalInfoDouble(repository, "popularity")
                        );
                }
                break;
            }

            case BasicInfo _:
            {
                if (_repositories.TryGetValue(typeof(BasicInfo),
                                              out IDataRepository repository))
                {
                    container.AddParameter(
                        nameof(BasicInfo.VoteCount),
                        GetAdditionalInfoInt32(repository, "vote_count")
                        );
                    container.AddParameter(
                        nameof(BasicInfo.VoteAverage),
                        GetAdditionalInfoDouble(repository, "vote_average")
                        );
                }
                break;
            }

            default:
            {
                _logger.Warn($"Unregornized data type: {data[0].GetType().FullName}");
                break;
            }
            }
            return(container);
        }
        internal static RawDataContainer CreateRawDataContainerWithBasicInfo(
            IEnumerable <BasicInfo> items)
        {
            items.ThrowIfNull(nameof(items));

            var container = new RawDataContainer(new List <BasicInfo>(items));

            if (!container.RawData.Any())
            {
                return(container);
            }

            container.AddParameter(
                nameof(BasicInfo.VoteCount),
                MinMaxDenominator.CreateForCollection(container.RawData, basic => basic.VoteCount)
                );

            container.AddParameter(
                nameof(BasicInfo.VoteAverage),
                MinMaxDenominator.CreateForCollection(container.RawData, basic => basic.VoteAverage)
                );

            return(container);
        }