示例#1
0
        public static void Main(string[] args)
        {
            var serviceProvider = IoC.CongifureServices();
            var logger          = serviceProvider.GetService <ILoggerFactory>()
                                  .CreateLogger <Program>();

            var weatherDataReader = serviceProvider.GetService <IWeatherDataReader>();

            var weatherDataLines = weatherDataReader.ReadLines(File.OpenRead(args[0]));

            var dayWithLowestTemperatureSpread =
                WeatherDataQuery.GetDayNumberWithLowestTemperatureSpread(weatherDataLines);

            logger.LogInformation($"Day {dayWithLowestTemperatureSpread} has lowest temperature spread.");

            System.Console.ReadKey();
        }
示例#2
0
        /// <summary>
        /// Read and convert Json
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="objectType"></param>
        /// <param name="existingValue"></param>
        /// <param name="serializer"></param>
        /// <returns></returns>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jo     = JObject.Load(reader);
            var     result = new WeatherDataQuery();

            foreach (var jItem in jo.Children())
            {
                if (jItem.Path.ToLower().Contains("fahren"))
                {
                    result.TempMetric = (int)Unit.Temperature.F;
                }
                if (jItem.Path.ToLower().Contains("celsi"))
                {
                    result.TempMetric = (int)Unit.Temperature.C;
                }
                if (jItem.Path.ToLower().Contains("mph"))
                {
                    result.SpeedMetric = (int)Unit.Speed.MPH;
                }
                if (jItem.Path.ToLower().Contains("kph"))
                {
                    result.SpeedMetric = (int)Unit.Speed.KPH;
                }

                if (jItem.Path.ToLower().Contains("temp"))
                {
                    result.Temperature = jItem.First.Value <double>();
                }
                if (jItem.Path.ToLower().Contains("wind"))
                {
                    result.WindSpeed = jItem.First.Value <double>();
                }
                if (jItem.Path.ToLower().Contains("where"))
                {
                    result.Location = jItem.First.Value <string>();
                }
                if (jItem.Path.ToLower().Contains("location"))
                {
                    result.Location = jItem.First.Value <string>();
                }
            }

            return(result);
        }