static void Main(string[] args) { Mueble sillaMaderaRoble = new Madera("silla de madera", 3, (float)2.6, 38, 32, 29, eColor.Rojo, eTipoDeMadera.Roble); Mueble sillaMaderaRoble2 = new Madera("Silla de madera", 7, (float)2.6, 38, 32, 29, eColor.Rojo, eTipoDeMadera.Roble); Mueble mesaMaderaAbedul = new Madera("Mesa de madera", 9, (float)8.7, 65, 51, 44, eColor.Negro, eTipoDeMadera.Abedul); Mueble escritorioMaderaPino = new Madera("Escritorio de madera", 5, (float)6.9, 46, 40, 38, eColor.Sin, eTipoDeMadera.Pino); Mueble sillaMetalAluminio = new Metal("Silla de aluminio", 1, (float)4.4, 41, 34, 25, eColor.Violeta, eTipoDeMetal.Aluminio);//Deberia setear el color en Sin Mueble mesaMetalAcero = new Metal("Mesa de acero", 2, (float)9.9, 66, 49, 41, eColor.Verde, eTipoDeMetal.Acero); Mueble mesaVidrio = new Vidrio("Mesa de vidrio", 4, (float)7.6, 61, 47, 43); Fabrica.AgregarMueble = sillaMaderaRoble; Fabrica.AgregarMueble = sillaMaderaRoble2; Console.WriteLine(Fabrica.RetornarInformacionTotal()); Fabrica.AgregarMueble = mesaMaderaAbedul; Fabrica.AgregarMueble = escritorioMaderaPino; Fabrica.AgregarMueble = sillaMetalAluminio; Fabrica.AgregarMueble = mesaMetalAcero; Fabrica.AgregarMueble = mesaVidrio; Console.WriteLine(sillaMetalAluminio.Facturacion()); Console.WriteLine(sillaMaderaRoble.Facturacion()); Console.WriteLine(mesaVidrio.Facturacion()); Console.WriteLine(Fabrica.RetornarInformacionTotal()); Mueble mesaVidrio2 = new Vidrio(); //Por defecto, no deberia dejar de agregar a la lista Mueble mesaMadera = new Madera(); //Por defecto, no deberia dejar de agregar a la lista Mueble sillaMetal = new Metal(); //Por defecto, no deberia dejar de agregar a la lista Fabrica.Muebles.Clear(); //Limpiamos para probar los muebles invalidos Console.WriteLine(mesaVidrio2); Console.WriteLine(mesaMadera); Console.WriteLine(sillaMetal); Fabrica.AgregarMueble = mesaVidrio2; //NO SE AGREGA A LA LISTA Fabrica.AgregarMueble = mesaMadera; //NO SE AGREGA A LA LISTA Fabrica.AgregarMueble = sillaMetal; //NO SE AGREGA A LA LISTA Console.WriteLine(Fabrica.RetornarInformacionTotal()); //No deberia retornar nada. Console.Read(); }