public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        var         obj = JObject.Load(reader);
        ProductBase product;
        var         pt = obj["productType"];

        if (pt == null)
        {
            throw new ArgumentException("Missing productType", "productType");
        }
        string productType = pt.Value <string>();

        if (productType == "concrete1")
        {
            product = new ConcreteProduct1();
        }
        else if (productType == "concrete2")
        {
            product = new ConcreteProduct2();
        }
        else
        {
            throw new NotSupportedException("Unknown product type: " + productType);
        }
        serializer.Populate(obj.CreateReader(), product);
        return(product);
    }
        public IProduct CreateProduct(ProductType type)
        {
            IProduct product = null;
            switch (type)
            {
                case ProductType.ProductType1:
                    product = new ConcreteProduct1();
                    break;
                case ProductType.ProductType2:
                    product = new ConcreteProduct2();
                    break;
                default:
                    break;
            }

            return product;
        }
Exemple #3
0
        public override IProduct Create(string productName)
        {
            IProduct product;
            switch (product)
            {
            case "Product1":
                product = new ConcreteProduct1();
                break;
            case "Product2":
                product = new ConcreteProduct2();
                break;

            default:
                break;
            }
            return product;
        }
        public IProduct CreateProduct(ProductType type)
        {
            IProduct product = null;

            switch (type)
            {
            case ProductType.ProductType1:
                product = new ConcreteProduct1();
                break;

            case ProductType.ProductType2:
                product = new ConcreteProduct2();
                break;

            default:
                break;
            }

            return(product);
        }
    public static Product createProduct(string type)
    {
        Product product = null;

        if (prMap.ContainsKey(type))
        {
            product = prMap[type];
        }
        else
        {
            if (type.Equals("ConcreteProduct1"))
            {
                product = new ConcreteProduct1();
            }
            else
            {
                product = new ConcreteProduct2();
            }
            prMap.Add(type, product);
        }

        return(product);
    }