static void Main(string[] args) { Centralita MiCentral = new Centralita("Telefonica"); MiCentral.RutaDeArchivo = "Centralita.txt"; Local Llamada1 = new Local("42409124", 30, "20705020", 2.65f); Provincial Llamada2 = new Provincial("42407151", Franja.Franja_1, 21, "42471562"); Local Llamada3 = new Local("41354235", 45, "87625412", 1.99f); Provincial Llamada4 = new Provincial(Franja.Franja_3, Llamada2); //MiCentral = MiCentral + Llamada1; try { MiCentral = MiCentral + Llamada1; } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } try { MiCentral = MiCentral + Llamada2; } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } try { MiCentral = MiCentral + Llamada3; } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } try { MiCentral = MiCentral + Llamada4; } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } //Console.WriteLine(MiCentral.ToString()); Console.ReadKey(); MiCentral.RutaDeArchivo = "Centralita.XML"; try { MiCentral.Serializarse(); } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } Centralita OtraCentral = new Centralita(); OtraCentral.RutaDeArchivo = "Centralita.XML"; try { OtraCentral.Deserializarse(); } catch (CentralitaException e) { Console.WriteLine(e.Message); Console.WriteLine(e.NombreClase); Console.WriteLine(e.NombreMetodo); } Console.WriteLine(OtraCentral.ToString()); Console.ReadKey(); }
static void Main(string[] args) { #region Creacion de Central y Llamadas Centralita Telefonica = new Centralita("Telefonica"); Local llamadaLocaluno = new Local("4445-3333", "123-123", 0.30F, 2.65F); Provincial llamadaProvincialuno = new Provincial("5555-5555", Franja.Franja_1, 0.21F, "0800-333-8100"); Local llamadaLocaldos = new Local("1313-3131", "5677-2311", 0.45F, 1.99F); Provincial llamadaProvincialdos = new Provincial(Franja.Franja_3, llamadaProvincialuno); #endregion #region Agregar Llamadas y Metodos #region Metodos del ejercicio solo Herencia //Telefonica.Llamadas.Add(llamadaLocaluno); //Telefonica.Llamadas.Add(llamadaProvincialdos); //Telefonica.Llamadas.Add(llamadaLocaldos); //Telefonica.Llamadas.Add(llamadaProvincialdos); //Console.WriteLine("MUESTRO SIN ORDENAR: "); //Telefonica.Mostrar(); //Console.ReadKey(); //Telefonica.OrdenarLlamadas(); //Console.Clear(); //Console.WriteLine("\nAHORA ORDENADO: "); //Telefonica.Mostrar(); //Console.ReadKey(); #endregion #region Agregado con Serializacion 1 Telefonica.RutaDeArchivo = @"F:\Facultad\Programacion II (C#) 2016\+++Solucion General+++\Ejercicios Guia anteriores\CentralitaCompleto\CentralitaTelefonica\Centralita.xml"; Console.WriteLine("\nSe deserializo?: "); Console.WriteLine(Telefonica.DesSerizarse().ToString()); #endregion #region Metodos del ejercicio Polimorfismo y tambien usado por Serializacion Telefonica = Telefonica + llamadaLocaluno; Telefonica = Telefonica + llamadaProvincialuno; Telefonica = Telefonica + llamadaLocaldos; Telefonica = Telefonica + llamadaProvincialuno; Console.WriteLine("\nLLAMADAS SIN ORDENAR: "); Console.WriteLine(Telefonica.ToString()); Console.ReadKey(); Console.Clear(); Console.WriteLine("\nLLAMADAS ORDENADAS: "); Telefonica.OrdenarLlamadas(); Console.WriteLine(Telefonica.ToString()); Console.ReadKey(); #endregion #region Agregado con Serializacion 2 Console.Clear(); Console.WriteLine("\nSe serializo?: "); Console.WriteLine(Telefonica.Serializarse().ToString()); Console.WriteLine("\nSe guarda en el txt la llamada local uno?: "); Console.WriteLine(Telefonica.GuardarEnArchivo(llamadaLocaluno, true).ToString()); #endregion #endregion }
public bool DesSerizarse() { #region Lo que me pide //Retornará true, si es que se pudo //deserializar del archivo .XML al objeto actual, del path //indicado por el atributo privado _ruta. En el caso de no //poder deserializarlo (debido a una excepción) se deberá //lanzar una excepción de tipo CentralitaException, //indicándole: //o Mensaje de error. //o Nombre de la clase que provocó la excepción. //o Nombre del método que provoco la excepción. //o El objeto de tipo Exception. #endregion #region NOTAS IMPORTANTES DESSERIALIZACION /* * ******TRY****** * En este punto, creamos un try en donde debo colocar lo que quiero que suceda si es exitoso. * Creamos un XMLTEXTREADER pasandole SOLO la ruta del archivo la cual ya tenemos un atributo con ese dato disponible. * Creamos un XMLSERIALIZER pasandole el tipo que queremos serializar. * IMPORTANTE --> En este caso solo coloque para desseralizar la lista, para deserealizar cada uno se debería poner todos los typeof * de la siguiente manera --> (typeof(List<Llamada>)), new Type[] { typeof(Centralita), typeof(Provincial), typeof(Local) } * Creamos una centralita para guardar la informacion que se deserializó. * Lo deserializamos usando "xmlS.Deseralize" y le pasamos el XMLTEXTREADER (ej: xmlR) y lo asignamos a la centralita creada de auxiliar. * Debemos cerrar el XMLTEXTREADER utilizando en el ej: xmlR.Close(), y devolvemos el TRUE que devuelve la funcion. * * ******CATCH****** En el bloque catch, debemos crear la primera excepcion de todo--> Exception e (RECORDAR, ES LA EXCEPCION GENERICA) * Dentro del catch, creamos otro bloque try/catch * SEGUNDO TRY * Mostramos por consola lo que pide el ejercicio, en este caso un InnerException desde el obj Exception e que habiamos creado * Luego lanzamos la nueva exepcion que nos pide, creamos una nueva a partir de la clase CentralitaException. * Le pasamos Dentro de este, utilizando el obj e, e.Message, e.Source, e.TargetSite.Tostring(), e.InnerException. * Estos son los valores que necesita el constructor de CentralitaException (mensaje, clase, metodo e innerException) * Le estamos mandando los errores que se generan a la CentralitaExeption * SEGUNDO CATCH * Generamos una CentralitaException f y dentro mostramos con el ConsoleWriteLine concatenando. llamando a las propiedades de * CentralitaException que habiamos guardado en el try anterior. EJ: f.Mensaje+f.NombreClase+f.Metodo+f.InnerException * Cerramos el segundo bloque try/catch y retornamos el FALSE. */ #endregion try { XmlTextReader xmlR = new XmlTextReader(this.RutaDeArchivo); XmlSerializer xmlS = new XmlSerializer((typeof(List<Llamada>))); Centralita auxiliar = new Centralita(); auxiliar=(Centralita)xmlS.Deserialize(xmlR); xmlR.Close(); return true; } catch (Exception e) { try { Console.WriteLine(e.InnerException); throw new CentralitaException(e.Message, e.Source, e.TargetSite.ToString(), e.InnerException); } catch (CentralitaException f) { Console.WriteLine(f.Mensaje + f.NombreClase + f.NombreMetodo + f.InnerException); } return false; } }
static void Main(string[] args) { Centralita miCentralita = new Centralita("Telefonica"); //miCentralita.DeSerializarse(); miCentralita.RutaDeArchivo = "Centralita.xml"; Local LlamadaUno = new Local("Juan Martin", 0.3F, "Mama", 2.65F); Provincial LlamadaDos = new Provincial("Martin", Franja.Franja_1, 0.21F, "Abuela"); Local LlamadaTres = new Local("Carlos", 0.45F, "Ezequiel", 1.99F); Provincial LlamadaCuatro = new Provincial(Franja.Franja_3, LlamadaDos); bool flag = false; try { miCentralita += LlamadaUno; miCentralita += LlamadaDos; miCentralita += LlamadaTres; miCentralita += LlamadaCuatro; } catch (CentralitaException x) { Console.WriteLine(x.NombreClase); Console.WriteLine(x.NombreMetodo); Console.WriteLine(x.Message); if (x.InnerException != null) { Console.WriteLine("Inner exception: " + x.InnerException); } } Console.WriteLine(LlamadaUno.ToString()); Console.WriteLine(LlamadaDos.ToString()); Console.WriteLine(LlamadaTres.ToString()); Console.WriteLine(LlamadaCuatro.ToString()); Console.ReadLine(); Console.Clear(); miCentralita.ordenarLlamadas(); Console.WriteLine("CENTRALITA ORDENADA"); Console.WriteLine(miCentralita.ToString()); Console.ReadLine(); try { miCentralita.Serializarse(); } catch (CentralitaException x) { Console.WriteLine(x.Message); Console.WriteLine(x.NombreClase); Console.WriteLine(x.NombreMetodo); if (x.ExcepcionInterna != null) { Console.WriteLine(x.ExcepcionInterna); } } try { flag = miCentralita.DeSerializarse(); if (flag == true) { Console.WriteLine("Centralita deserializada"); } else { Console.WriteLine("Centralita no deserializada"); } } catch (CentralitaException x) { Console.WriteLine(x.Message); Console.WriteLine(x.NombreClase); Console.WriteLine(x.NombreMetodo); if (x.ExcepcionInterna != null) { Console.WriteLine(x.ExcepcionInterna); } } Console.ReadLine(); }