lunes, 31 de diciembre de 2012

[C#] Pruebas en proyectos que usan AutoFac

En este interesante post explican cómo realizar pruebas a un proyecto que utiliza AutoFac. Aquí el link: http://robdmoore.id.au/blog/2012/04/27/testing-code-that-uses-autofac-dependencyresolver-in-asp-net-mvc/

lunes, 24 de diciembre de 2012

[ASP.NET] File uploader JQuery y ASP.NET

Este post me fué muy útil cuando quise hacer un "file uploader" para JQuery Mobile con ASP.NET

Realmente lo recomiendo.

Ir al post

[ASP.NET] Como usar un "virtual path" en una MasterPage

En este post veremos cómo utilizar un "virtual path" dentro de una Master Page. Esto es realmente útil en los casos en los que las páginas que usan una Master Page se encuentren en diferentes directorios.
<!-- Ejemplo por http://programando-soft.blogspot.com -->
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/Scripts/jquery.js") %>"></script>
<!-- Fin del ejemplo -->

lunes, 10 de diciembre de 2012

[C#] Serializar y deserializar objetos en XML

En este post veremos como guardar un objeto c# a un archivo xml y como cargarlo. Código Serializador

using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace Datos
{
    public static class SerializadorXML
    {
        public static object Deserializar(XmlDocument xml, Type type)
        {
            XmlSerializer s = new XmlSerializer(type);
            string xmlString = xml.OuterXml.ToString();
            byte[] buffer = ASCIIEncoding.UTF8.GetBytes(xmlString);
            MemoryStream ms = new MemoryStream(buffer);
            XmlReader reader = new XmlTextReader(ms);
            object o = null;
            try
            {
                o = s.Deserialize(reader);
            }
            finally
            {
                reader.Close();
            }
            return o;
        }

        public static T Deserializar(XmlDocument xml)
        {
            return (T)Deserializar(xml, typeof(T));
        }

        public static XmlDocument Serializar(object o)
        {
            XmlSerializer s = new XmlSerializer(o.GetType());
            XmlDocument xml = null;
            MemoryStream ms = new MemoryStream();
            XmlTextWriter writer = new XmlTextWriter(ms, new UTF8Encoding());
            writer.Formatting = Formatting.Indented;
            writer.IndentChar = ' ';
            writer.Indentation = 5;

            try
            {
                s.Serialize(writer, o);
                xml = new XmlDocument();
                string xmlString = ASCIIEncoding.UTF8.GetString(ms.ToArray());
                xml.LoadXml(xmlString);
            }
            finally
            {
                writer.Close();
                ms.Close();
            }
            return xml;
        }
    }
}

Ejemplo

// Clase que almacenaremos
public class Persona
{
    private string nombre;
    public string Nombre
    {
        get { return nombre; }
        set { nombre = value; }
    }

    private DateTime nacimiento;
    public DateTime Nacimiento
    {
        get { return nacimiento; }
        set { nacimiento= value; }
    }

    /* SUPONIENDO QUE NO QUIERO QUE SE GUARDE ESTO: */
    private bool fooBar;
    [XmlIgnore] // << Agrego este atributo a la property
    public bool FooBar
    {
        get { return fooBar; }
        set { fooBar = value; }
    }
}

// Clase administradora de nuestro ejemplo
public static class Ejemplo
{
    public static Persona CargarPersona(string file)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(file);
        return SerializadorXML.Deserializar(doc);
    }   

    public static void GuardarPersona(string file, Persona persona)
    {
        XmlDocument doc = SerializadorXML.Serializar(persona);
        doc.Save(file);
    }
}