Mostrando entradas con la etiqueta c#. Mostrar todas las entradas
Mostrando entradas con la etiqueta c#. Mostrar todas las entradas

viernes, 2 de septiembre de 2011

.NET SERIALIZATION C#

El proceso de serializacion consiste en almacenar una instancia de una clase en un archivo de manera tal que pueda volver a crearse el objeto con sus mismas propiedades cargándolo desde el mismo archivo; es decir si tienes un objeto creado en memoria el cual representa a un automóvil y deseas almacenar el objeto completo para luego volver a hacer referencia a él en otro momento, entonces deberías utilizar serializacion.
Vamos a ver como funciona el proceso de serializacion en .Net
Para nuestro estudio vamos a suponer que tenemos una clase llamada Persona la cual tiene como propiedades el Nombre, el apellido y la Cedula(Numero único de identificación) de la persona.
Para poder serializar una clase esta debe estar marcada con el atributo [Serializable]
[Serializable]
class Persona
        {
            public string _Nombre;
            public string _Apellido;
            public string _Cedula;
                      
        }


El siguiente paso consiste en elegir el tipo de serializador que necesitamos teniendo dentro de nuestras opciones el serializador binario, el serializador xml y otros soportados por el espacio de nombres System.Runtime.Serialization.


Serializador Binario:



 Persona nuevaPersona = new Persona();
            nuevaPersona._Nombre = "Carlos Andres";
            nuevaPersona._Apellido = "Arango Morales";
            nuevaPersona._Cedula = "xxx xxx xxx";


            //Se crea una instancia del formateador binario que implementa la interfaz IFormater
            IFormatter Formatter = new BinaryFormatter();

            //Cramos un Stream para almacenar el archivo en el disco
            Stream stream = new FileStream("PersonaSerializada.bin", FileMode.Create, FileAccess.Write, FileShare.None);

            //Utilizamos el Formatter para serializar el objeto en el stream

            Formatter.Serialize(stream, nuevaPersona);
            stream.Close();



De esta forma tendríamos en la carpeta de la aplicación un nuevo archivo llamado PersonaSerializada.bin con caracteres no fácilmente comprensibles por los humanos pero en el cual esta almacenado el objeto.


Deserializador Binario:



Si deseamos leer el objeto desde el archivo entonces debemos leer el archivo utilizando un Stream Reader para luego por medio del Formatter realizar un Cast al tipo de objeto a los datos retornados por el Formatter.


 IFormatter Formatter2 = new BinaryFormatter();
            Stream stream2 = new FileStream("PersonaSerializada.bin", FileMode.Open, FileAccess.Read, FileShare.Read);

            //Esta es la parte importante
            //Despues de tener el objeto en el stream creamos el objeto declarando el contenedor y realizando
            //un Cast del contenido del stream a la clase que deseamos deserializar

            Persona PersonaDesSerializada = (Persona) Formatter2.Deserialize(stream2);


Ahora tenemos en memoria en el objeto PersonaDesSerializada el contenido del objeto persona creado inicialmente.


Existen varios de tipos de serializadores los cuales son importantes y mas efectivos en algunos casos pero el proceso es muy similar al que vimos en este apartado del blog.





El código completo lo pueden encontrar en este link Serializacion












martes, 22 de febrero de 2011

Sumar dias o semanas o meses a una fecha en .net

Cuando estamos desarrollando aplicaciones en .net en ocasiones necesitamos sumar o restar algunas cantidades a las fechas actuales para esto .net trae un metodo el cual nos facilitara mucho la vida


por ejemplo

si quieres sumar un dia a una fecha


Dim ProximoDia as date
Dim DiaActual as date = system.datetime.time.now
ProximoDia = DiaActual .AddDays(1)


Puedes utilizar intelisense para ver los metodos que puedes utilizar para sumer meses años y demas


tambien puedes utilizar el metodo DateAdd



De la documentación de MSDN

DateAdd Function
Returns a Date value containing a date and time value to which a specified time interval has been added.

algunos ejemplos de MSDN

Example

This example takes a date and, using the DateAdd function, displays a corresponding date a specified number of months in the future.


Dim Msg, Number, StartDate As String 'Declare variables.
Dim Months As Double
Dim SecondDate As Date
Dim IntervalType As DateInterval
IntervalType = DateInterval.Month ' Specifies months as interval.
StartDate = InputBox("Enter a date")
SecondDate = CDate(StartDate)
Number = InputBox("Enter number of months to add")
Months = Val(Number)
Msg = "New date: " & DateAdd(IntervalType, Months, SecondDate)
MsgBox (Msg)