예제 #1
0
        public override void ProcessCarrier(ICarrier carrier)
        {
            FullInfo fullInfo;

            // Duck-typing!
            if (!zipcodeInfoMap.TryGetValue(carrier.Signal.Zipcode, out fullInfo))
            {
                fullInfo = new FullInfo();
                zipcodeInfoMap[carrier.Signal.Zipcode] = fullInfo;
            }

            if (carrier.Protocol.DeclTypeName == "WeatherInfo")
            {
                fullInfo.WeatherInfo = carrier.Signal;
            }

            if (carrier.Protocol.DeclTypeName == "Location")
            {
                fullInfo.LocationInfo = carrier.Signal;
            }

            if (fullInfo.Completed)
            {
                string conditions = ProcessConditions(fullInfo.WeatherInfo);
                string hazards    = ProcessHazards(fullInfo.WeatherInfo);
                Say("Here is the weather for " + fullInfo.LocationInfo.City + " " + fullInfo.LocationInfo.State + ". ");
                Say("The low is " + fullInfo.WeatherInfo.Low + ".");
                Say("The high is " + fullInfo.WeatherInfo.High + ".");
                Say("The weather is: " + fullInfo.WeatherInfo.Summary + ".");
                Say(conditions);
                Say(hazards);
            }
        }
예제 #2
0
		public override void ProcessCarrier(ICarrier carrier)
		{
			try
			{
				FullInfo fullInfo;

				// Duck-typing! -- Both USLocation and WeatherInfo have a Zip5 member.
				if (!zipcodeInfoMap.TryGetValue(carrier.Signal.Zip5.Value, out fullInfo))
				{
					fullInfo = new FullInfo();
					zipcodeInfoMap[carrier.Signal.Zip5.Value] = fullInfo;
				}

				if (carrier.Protocol.DeclTypeName == "WeatherInfo")
				{
					fullInfo.WeatherInfo = carrier.Signal;
				}

				if (carrier.Protocol.DeclTypeName == "USLocation")
				{
					fullInfo.LocationInfo = carrier.Signal;
				}

				if (fullInfo.Completed)
				{
					string conditions = ProcessConditions(fullInfo.WeatherInfo);
					string hazards = ProcessHazards(fullInfo.WeatherInfo);
					Say("Here is the weather for " + fullInfo.LocationInfo.City.Value + " " + fullInfo.LocationInfo.USState.Value + ". ");
					Say("The low is " + fullInfo.WeatherInfo.Low + ".");
					Say("The high is " + fullInfo.WeatherInfo.High + ".");
					Say("The weather is: " + fullInfo.WeatherInfo.Summary + ".");
					Say(conditions);
					Say(hazards);
				}
			}
			catch (Exception ex)
			{
				EmitException(ex);
			}
		}
예제 #3
0
        public override void ProcessCarrier(ICarrier carrier)
        {
            try
            {
                FullInfo fullInfo;

                // Duck-typing! -- Both USLocation and WeatherInfo have a Zip5 member.
                if (!zipcodeInfoMap.TryGetValue(carrier.Signal.Zip5.Value, out fullInfo))
                {
                    fullInfo = new FullInfo();
                    zipcodeInfoMap[carrier.Signal.Zip5.Value] = fullInfo;
                }

                if (carrier.Protocol.DeclTypeName == "WeatherInfo")
                {
                    fullInfo.WeatherInfo = carrier.Signal;
                }

                if (carrier.Protocol.DeclTypeName == "USLocation")
                {
                    fullInfo.LocationInfo = carrier.Signal;
                }

                if (fullInfo.Completed)
                {
                    string conditions = ProcessConditions(fullInfo.WeatherInfo);
                    string hazards    = ProcessHazards(fullInfo.WeatherInfo);
                    Say("Here is the weather for " + fullInfo.LocationInfo.City.Value + " " + fullInfo.LocationInfo.USState.Value + ". ");
                    Say("The low is " + fullInfo.WeatherInfo.Low + ".");
                    Say("The high is " + fullInfo.WeatherInfo.High + ".");
                    Say("The weather is: " + fullInfo.WeatherInfo.Summary + ".");
                    Say(conditions);
                    Say(hazards);
                }
            }
            catch (Exception ex)
            {
                EmitException(ex);
            }
        }