Exemple #1
0
        public void Clone()
        {
            var banana = new CloneableProduct
            {
                Name = "Banana",
                Price = new decimal(2.5)
            };

            var banana2 = banana.Clone();

            Assert.IsTrue(banana.EqualsByValue(banana2));
        }
Exemple #2
0
        public void Clone()
        {
            var banana = new CloneableProduct
            {
                Name  = "Banana",
                Price = new decimal(2.5)
            };

            var banana2 = banana.Clone();

            Assert.IsTrue(banana.EqualsByValue(banana2));
        }
        private static void Prototype()
        {
            // Language agnostic solution
            var supermarket = new Supermarket();

            supermarket.AddProduct("Milk", new Milk(0.89m));
            supermarket.AddProduct("Bread", new Bread(1.10m));

            decimal sourcePrice;
            decimal currentPrice;

            var clonedMilk = (Milk)supermarket.GetProduct("Milk");

            clonedMilk.Price = 1;
            sourcePrice      = supermarket.GetProduct("Milk").Price;
            currentPrice     = clonedMilk.Price;
            Console.WriteLine("{0} | {1}", sourcePrice, currentPrice);

            var clonedBread = (Bread)supermarket.GetProduct("Bread");

            clonedBread.Price = 2;
            sourcePrice       = supermarket.GetProduct("Bread").Price;
            currentPrice      = clonedBread.Price;
            Console.WriteLine("{0} | {1}", sourcePrice, currentPrice);

            // C# specific solution using the ICloneable interface
            var cloneableProduct = new CloneableProduct(100);
            var clonedProduct    = (CloneableProduct)cloneableProduct.Clone();

            clonedProduct.Price = 200;
            sourcePrice         = cloneableProduct.Price;
            currentPrice        = clonedProduct.Price;
            Console.WriteLine("{0} | {1}", sourcePrice, currentPrice);

            Console.ReadKey();
        }