Beispiel #1
0
 internal Product(IList <string> displayNames, int?capacity, string image, ChildProduct child, ConstantProduct constChild, int constInt, string constString, string constStringAsEnum)
 {
     DisplayNames      = displayNames;
     Capacity          = capacity;
     Image             = image;
     Child             = child;
     ConstChild        = constChild;
     ConstInt          = constInt;
     ConstString       = constString;
     ConstStringAsEnum = constStringAsEnum;
 }
Beispiel #2
0
        public Product(ChildProduct child, ConstantProduct constChild)
        {
            if (child == null)
            {
                throw new ArgumentNullException(nameof(child));
            }
            if (constChild == null)
            {
                throw new ArgumentNullException(nameof(constChild));
            }

            Child             = child;
            ConstChild        = constChild;
            ConstInt          = 0;
            ConstString       = "constant";
            ConstStringAsEnum = "constant_string_as_enum";
        }
        internal static Product DeserializeProduct(JsonElement element)
        {
            IList <string>  displayNames      = default;
            int?            capacity          = default;
            string          image             = default;
            ChildProduct    child             = default;
            ConstantProduct constChild        = default;
            int             constInt          = default;
            string          constString       = default;
            string          constStringAsEnum = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("display_names"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    List <string> array = new List <string>();
                    foreach (var item in property.Value.EnumerateArray())
                    {
                        if (item.ValueKind == JsonValueKind.Null)
                        {
                            array.Add(null);
                        }
                        else
                        {
                            array.Add(item.GetString());
                        }
                    }
                    displayNames = array;
                    continue;
                }
                if (property.NameEquals("capacity"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    capacity = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("image"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    image = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("child"))
                {
                    child = ChildProduct.DeserializeChildProduct(property.Value);
                    continue;
                }
                if (property.NameEquals("constChild"))
                {
                    constChild = ConstantProduct.DeserializeConstantProduct(property.Value);
                    continue;
                }
                if (property.NameEquals("constInt"))
                {
                    constInt = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("constString"))
                {
                    constString = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("constStringAsEnum"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        continue;
                    }
                    constStringAsEnum = property.Value.GetString();
                    continue;
                }
            }
            return(new Product(displayNames, capacity, image, child, constChild, constInt, constString, constStringAsEnum));
        }