using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization.Formatters.Binary; using System.IO; using System.Diagnostics; namespace ConsoleApplication14 { class Program { static void Main(string[] args) { //Crea el formatter que es el encargado de serializar var formatter = new BinaryFormatter(); //Es necesario un Strema de cualquier tipo (un FileStream por ejemplo) var stream = new MemoryStream(); //se instancia el objeto a serializar var o = new MyClass() { MyProperty = 1, MyProperty2 = "dos", PropiedadIgnorada ="Ignorar" }; o.SetValorPrivado(true); //Se serializa el objeto y se pone en el Stream formatter.Serialize(stream, o); var data = stream.ToArray(); //De-serializamos var o2 = (MyClass) formatter.Deserialize(new MemoryStream(data)); //verificamos que el objeto de-serializado sea igual al original Debug.Assert(o.MyProperty.Equals(o2.MyProperty)); Debug.Assert(o.MyProperty2.Equals(o2.MyProperty2)); //La propiedad que no se serializó queda en null Debug.Assert(o2.PropiedadIgnorada==null); //notar que se serilizan los valores privados también Debug.Assert(o.VerificarValorPrivado().Equals(o2.VerificarValorPrivado())); } } //Las clases para serializar con el serializador binario tienen que estar marcadas //como Serilizable [Serializable] class MyClass { private bool _private; public int MyProperty { get; set; } public string MyProperty2 { get; set; } //con el atributo NonSerialized se ignoran propiedades //que no queremos serilizar [System.NonSerialized] public string PropiedadIgnorada; public void SetValorPrivado(bool valor) { _private = valor; } public bool VerificarValorPrivado() { return _private; } } }
lunes, 2 de noviembre de 2009
Serialización binaria, ejemplo simple
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
Una consulta soy nuevo existe var en C# parece un antigua forma y cuando lo programe FileStream me mando a la b. Pero supongo que probaste este código antes de publico me lo imagino verdad
Publicar un comentario