Con este artículo concluyo la miniserie sobre SilverLight y WPF, ya que simplemente queda explicar cómo se puede serializar y deserializar un objeto en WCF. Recordemos que todo esto ha venido por una aplicación SL que estoy montando y que a través de un servicio web en WCF ejerzo dicho proceso de serialización sobre los objetos.
Para ello, tenemos que tener en cuenta las siguientes partes:
- DataContractSerializer: Es la clase encargada de serializar el tipo. Nosotros podemos espeficiar y crear nuevos tipos de serializadores para nuestros objetos de datos según nuestras necesidades.
- Stream: Un flujo de datos, sea de memoria o ficheros que permita abrir o cerrarlos para acceder a los datos.
Ya está. Sencillo, ¿no? Pues veamos un par de ejemplos:
1: public bool SaveToXML(Foo foo)
2: {
3: bool retValue = false;
4: FileStream file = null;
5: try
6: {
7: DataContractSerializer dcs = new DataContractSerializer(foo.GetType());
8: file = new FileStream(@"fooPath", FileMode.Create);
9: dcs.WriteObject(file, galleryManager);
10: retValue = true;
11: }
12: catch ( Exception ex )
13: {
14: //...
15: }
16: finally
17: {
18: if ( file != null )
19: {
20: file.Close();
21: }
22: }
23: return retValue;
24: }
Y ahora otro ejemplo para abrir un fichero y deserializarlo:
1: public Foo LoadFromXML()
2: {
3: FileStream file = null;
4: Foo foo = null;
5: try
6: {
7: DataContractSerializer dcs = new DataContractSerializer(Foo.GetType());
8: file = new FileStream(@"FooPath", FileMode.OpenOrCreate);
9: foo = (Foo)dcs.ReadObject(file);
10: }
11: catch (Exception ex)
12: { }
13: finally
14: {
15: if (file != null)
16: {
17: file.Close();
18: }
19: }
20: return foo;
21: }
Con estas dos funciones ya podemos escribir y cargar datos del XML de nuestra clase serializada Foo.
No hay comentarios:
Publicar un comentario