lunes, 3 de abril de 2017

Pro C#: Módulo 06: Laboratorio 7: Código Fuente

Código Fuente de Ejemplo Laboratorio 7 

Debug.WriteLine( ... ), Debug.Assert( ... )


using System.Diagnostics;

    public partial class frmPrincipal : Form
    {
        private List<int> Numeros;

        /// <summary>
        /// Inicializa la lista de Números
        /// </summary>
        public frmPrincipal()
        {
            InitializeComponent();
            Numeros = new List<int>();
        }

        /// <summary>
        /// Agrega el valor a una lista si es entero
        /// Calcula el Promedio y retorna el valor
        /// </summary>
        /// <param name="Valor">Valor a Convertir</param>
        /// <returns>Promedio</returns>
        private decimal calcPromedio(string Valor)
        {
            int Numero = 0; bool EsNumero = false;
            decimal Promedio = 0;
           
            //Determina si el número es posible convertir a entero
            EsNumero = int.TryParse(Valor, out Numero);

            //Demostración de Debug.Assert
            //Si la expresión booleana es falsa.
            Debug.Assert( int.TryParse(Valor, out Numero) ,
                $"No es posible convertir {Valor} como entero"  );
           
            //Escribe valores en la Ventana de Output
            Debug.WriteLine($"Valor: {Valor}   Número {Numero}");
            //Si es número agrega a la lista
            if (EsNumero)
            {
                Numeros.Add(Numero);
            }

            //Encuentra el Promedio a retornar
            if (Numeros.Count > 0)
            {
                Promedio = 0;
                foreach(int x in Numeros)
                {
                    Promedio += x;
                }
                Promedio = Promedio / (decimal)Numeros.Count;
            }
            else
            {
                Promedio = (decimal)0;
            }

            return Promedio;          
        }

        private void btnPromedio_Click(object sender, EventArgs e)
        {
            //Invoca el método para Calcular Promedio
            decimal miPromedio =
                calcPromedio(txtNumero.Text);
            //Muestra el Promedio en la etiqueta
            lblPromedio.Text = $"El Promedio es: {miPromedio:N2}";
        }

    }


Pro C#: Módulo 06: Laboratorio: Código Fuente

Método eventoRegistro



using System.Diagnostics;


        /// <summary>
        /// Método que registra un evento y su nivel
        /// en la bitácora de eventos de Windows
        /// </summary>
        /// <param name="eventoBitacora">Bitácora a Registrar</param>
        /// <param name="eventoOrigen">Origen del Evento</param>
        /// <param name="eventoMensaje">Mensaje del Evento</param>
        /// <param name="Nivel">Nivel del Evento</param>
        private void eventoRegistro(string eventoBitacora,
            string eventoOrigen, string eventoMensaje,
            EventLogEntryType Nivel)
        {
            //Create el Origen del Evento sino Existe
            if( !EventLog.SourceExists(eventoOrigen)  )
            {               
                EventLog.CreateEventSource(eventoOrigen, eventoBitacora);
            }
            //Registra el mensaje
            EventLog.WriteEntry(eventoOrigen, eventoMensaje,
                Nivel);

        }


viernes, 31 de marzo de 2017

Pro C#: Módulo 05: Laboratorio: Código Fuente

Codigo Fuente de Ejemplo

Serializar una clase a formato JSON


Cliente.cs


    /// <summary>
    /// Clase Cliente para Demostrar
    /// Serializar a JSON
    /// </summary>
    public class Cliente
    {
        //Propiedad que se implementa automática por el compilador
        public int CodCliente { get; set; }
        public long CUI { get; set; }


        private string mApellido;
        public string Apellido
        {
            get { return mApellido; }
            set {
                mApellido = value;
                mApellido = mApellido.ToUpper();
            }
        }

        private string mNombre;
        public string Nombre
        {
            get { return mNombre; }
            set { mNombre = value;
                mNombre = mNombre.ToUpper();
            }
        }

        /// <summary>
        /// Método Constructor
        /// </summary>
        /// <param name="Codigo"></param>
        /// <param name="CUI"></param>
        /// <param name="Nombre"></param>
        /// <param name="Apellido"></param>
        public Cliente(int Codigo, long CUI,
            string Nombre, string Apellido)
        {
            CodCliente = Codigo;
            this.CUI = CUI;
            this.Nombre = Nombre;
            this.Apellido = Apellido;
        }


    }


Program.cs


        static void TestSerializarJSON()
        {
            //Declaración de Objetos
            Cliente C1, C2;
            //Instanciar Objetos
            C1 = new Cliente(1, 22334455,
                "Annelis", "Samayoa");
            C2 = new Cliente(2, 2355991000,
                "Mariandrée", "Santizo");
            //Prueba de Serialización de JSON
            Console.WriteLine();
            Console.WriteLine("Prueba de JSON: ");
            string sJSON = "";
            sJSON = JsonConvert.SerializeObject(C1, Formatting.Indented);
            Console.WriteLine(sJSON);

            //Declara e Instancia una Lista
            List<Cliente> Clientes = new List<Cliente>();
            //Agrega Elementos a la Lista
            Clientes.Add(C1);
            Clientes.Add(C2);

            //Serializa la Lista
            Console.WriteLine("Prueba de Serialización de Lista");
            sJSON = "";
            sJSON = JsonConvert.SerializeObject(Clientes, Formatting.Indented);
            Console.WriteLine(sJSON);

            //Deserializar una Lista
            List<Cliente> NuevosClientes;
            NuevosClientes = JsonConvert.DeserializeObject<List<Cliente>>(
                sJSON);
            Console.WriteLine();
            Console.WriteLine("Deserializar una lista");
            foreach(Cliente xCliente in NuevosClientes)
            {
                Console.WriteLine(xCliente.Nombre);
            }
           
        }

        static void Main(string[] args)
        {
            //TestContador();
            //TestSemaforos();
            TestSerializarJSON();

            //Espera por una tecla presionada
            Console.ReadKey();

        }