public static void ExecuteTask() { var breadRack1 = new Rack <Bread>(); var breadRack2 = new Rack <Bread>(); var breadRack3 = new Rack <Bread>(); var milkRack1 = new Rack <Milk>(); var milkRack2 = new Rack <Milk>(); var pastaRack = new Rack <Pasta>(); var porridgeRack = new Rack <Porridge>(); breadRack1.AddProducts(GetProducts(30, () => new Bread("bread"))); breadRack2.AddProducts(GetProducts(40, () => new Bread("bread"))); breadRack3.AddProducts(GetProducts(40, () => new Bread("bread"))); milkRack1.AddProducts(GetProducts(40, () => new Milk("milk"))); milkRack2.AddProducts(GetProducts(45, () => new Milk("milk"))); pastaRack.AddProducts(GetProducts(70, () => new Pasta("pasta"))); porridgeRack.AddProducts(GetProducts(60, () => new Porridge("porridge"))); Console.WriteLine($"Bread: {Rack<Bread>.Count}"); Console.WriteLine($"Milk: {Rack<Milk>.Count}"); Console.WriteLine($"Pasta: {Rack<Pasta>.Count}"); Console.WriteLine($"Porridge: {Rack<Porridge>.Count}"); }