Exemple #1
0
        public void Should_Deserialize_NutrientLevels_01()
        {
            string         productJson    = DataSetHelper.ReadFileContent("NutrientLevels.01.json");
            NutrientLevels nutrientLevels = JsonConvert.DeserializeObject <NutrientLevels>(productJson);

            Assert.Equal(NutrimentLevel.Moderate, nutrientLevels.Salt);
            Assert.Equal(NutrimentLevel.Low, nutrientLevels.SaturatedFat);
            Assert.Equal(NutrimentLevel.High, nutrientLevels.Fat);
            Assert.Equal(NutrimentLevel.Moderate, nutrientLevels.Sugars);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            var properties = typeof(Product).GetProperties();

            foreach (var prop in properties)
            {
                string       propName = prop.Name;
                PropertyInfo property = typeof(Product).GetProperty(propName);

                ////////////////////////////////////////////
                //
                // typeof(string)
                //
                /////////////////////////////////////////////
                if (prop.PropertyType == typeof(string))
                {
                    object val    = property.GetValue(Product);
                    string result = (string)val;

                    TextBlock tb = new TextBlock();
                    tb.FontWeight   = FontWeights.Bold;
                    tb.TextWrapping = TextWrapping.Wrap;
                    tb.Text         = propName + ": ";
                    wp1.Children.Add(tb);

                    // Type
                    string type = "";
                    if (propName.Length > _URL.Length)
                    {
                        if (propName.Substring(propName.Length - _URL.Length) == _URL)
                        {
                            type = TYPE_IMG;
                        }
                    }

                    // Image
                    if (type == TYPE_IMG)
                    {
                        Image imgVal = new Image();
                        imgVal.Width  = 125;
                        imgVal.Source = new BitmapImage(new Uri(result));
                        wp1.Children.Add(imgVal);
                    }
                    else
                    {
                        if (propName != "product_name")
                        {
                            TextBlock tbVal = new TextBlock();
                            tbVal.TextWrapping = TextWrapping.Wrap;
                            tbVal.MaxWidth     = 250;
                            tbVal.Text         = result;
                            wp1.Children.Add(tbVal);
                        }
                        else
                        {
                            TextBox tbVal = new TextBox();
                            tbVal.Foreground   = Brushes.Red;
                            tbVal.BorderBrush  = Brushes.Red;
                            tbVal.TextWrapping = TextWrapping.Wrap;
                            tbVal.MaxWidth     = 250;
                            tbVal.Text         = result;
                            wp1.Children.Add(tbVal);
                        }
                    }
                }
                ////////////////////////////////////////////
                //
                // typeof(int)
                //
                ////////////////////////////////////////////
                else if (prop.PropertyType == typeof(int))
                {
                    object val    = property.GetValue(Product);
                    string result = val.ToString();

                    TextBlock tb = new TextBlock();
                    tb.FontWeight   = FontWeights.Bold;
                    tb.TextWrapping = TextWrapping.Wrap;
                    tb.Text         = propName + ": ";
                    wp2.Children.Add(tb);

                    TextBlock tbVal = new TextBlock();
                    tbVal.TextWrapping = TextWrapping.Wrap;
                    tbVal.MaxWidth     = 250;
                    tbVal.Text         = result;
                    wp2.Children.Add(tbVal);
                }
                ////////////////////////////////////////////
                //
                // typeof(List<string>)
                //
                ////////////////////////////////////////////
                else if (prop.PropertyType == typeof(List <string>))
                {
                    List <string> val    = (List <string>)property.GetValue(Product);
                    string        result = string.Join(",", val.ToArray());

                    TextBlock tb = new TextBlock();
                    tb.FontWeight   = FontWeights.Bold;
                    tb.TextWrapping = TextWrapping.Wrap;
                    tb.Text         = propName + ": ";
                    wp3.Children.Add(tb);

                    TextBlock tbVal = new TextBlock();
                    tbVal.TextWrapping = TextWrapping.Wrap;
                    tbVal.MaxWidth     = 250;
                    tbVal.Text         = result;
                    wp3.Children.Add(tbVal);
                }
                ////////////////////////////////////////////
                //
                // typeof(NutrientLevels)
                //
                ////////////////////////////////////////////
                else if (prop.PropertyType == typeof(NutrientLevels))
                {
                    NutrientLevels nutrientLevels = (NutrientLevels)property.GetValue(Product);
                    var            propertiesNL   = typeof(NutrientLevels).GetProperties();
                    foreach (var propNL in propertiesNL)
                    {
                        TextBlock tb = new TextBlock();
                        tb.FontWeight   = FontWeights.Bold;
                        tb.TextWrapping = TextWrapping.Wrap;
                        tb.Text         = propNL.Name + ": ";
                        wp4.Children.Add(tb);

                        var       val    = propNL.GetValue(nutrientLevels);
                        string    result = (string)val;
                        TextBlock tbVal  = new TextBlock();
                        tbVal.TextWrapping = TextWrapping.Wrap;
                        tbVal.MaxWidth     = 250;
                        tbVal.Text         = result;
                        wp4.Children.Add(tbVal);
                    }
                }
                ////////////////////////////////////////////
                //
                // typeof(Nutriments)
                //
                ////////////////////////////////////////////
                else if (prop.PropertyType == typeof(Nutriments))
                {
                    Nutriments nutrientLevels = (Nutriments)property.GetValue(Product);
                    var        propertiesNL   = typeof(Nutriments).GetProperties();
                    foreach (var propNL in propertiesNL)
                    {
                        TextBlock tb = new TextBlock();
                        tb.FontWeight   = FontWeights.Bold;
                        tb.TextWrapping = TextWrapping.Wrap;
                        tb.Text         = propNL.Name + ": ";
                        wp5.Children.Add(tb);

                        var       val    = propNL.GetValue(nutrientLevels);
                        string    result = (string)val;
                        TextBlock tbVal  = new TextBlock();
                        tbVal.TextWrapping = TextWrapping.Wrap;
                        tbVal.MaxWidth     = 250;
                        tbVal.Text         = result;
                        wp5.Children.Add(tbVal);
                    }
                }
            }
        }