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; }
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); }