[WCF] DataContractSerializer y la propiedad IsReference. .NET 3.5 SP1

 

Hola a todos, siguiendo al hilo de mi anterior post y haciendo caso a un señor que de esto sabe un rato, se puede pasar por referencia los objetillos sin necesidad de generar un behavior especial, simplemente con una propiedad del atributo DataContract.

 

Sigo pensando exactamente lo mismo que antes, que esto, aunque solucione muchos problemas es posible que enmascare un desconocimiento de fondo por parte de los desarrolladores del proyecto, y que las cosas dejen de funcionar correctamente porque esto está o no aplicado.

 

Pero bueno al lío, que esto es rápido y sencillo.

 

Clase que NO se pasa por referencia

[DataContract]
public class Persona
{
[DataMember]
public string Nombre {get;set;}

[DataMember]
public string Apellidos {get;set;}
}

Esto es un DataContract normal y corriente.

 

Clase que SI se pasa por referencia

[DataContract(IsReference = true)]
public class Persona
{
[DataMember]
public string Nombre {get;set;}

[DataMember]
public string Apellidos {get;set;}
}

 

Como podéis observar es mucho más sencillo ahora. Lo único es que es necesario tener instalado el SP1 del framework 3.5.

 

Muchas gracias a Unai por indicarnos el camino….

 

Hasta la próxima.

 

Mario Ropero.

2 comentarios en “[WCF] DataContractSerializer y la propiedad IsReference. .NET 3.5 SP1”

  1. Bueno, ahora que ya te has puesto con el tema de IsReference queda pensar más en tu razonamiento. Hablas en este y en tu anterior post, no lo leía fondo, solamente tu problemática, sobre tipos por referencia y valor, lo cual no me parece apropiado cuando estás hablando de serialización. Ten en cuenta que esto nada tiene que ver con la organización de los mismos en la memoria, como asignaciones directas o referencias al Heap, IsReference y preserve object reference hablan solamente de la serialziación y de la compartición de contratos, incluso entre diferentes lenguajes, lo que podría complicar más tu razonamiento. En un de mis post, y no es por auto-referenciarme explico, creo que de una manera correcta, todo este punto. Al final conservar estas referencas al deserialzar no es más que como organizar la información y como podemos informar al serializador de turno de posibles referencias, como con la utilización de los atributos XML xsd:Id y xsd:ref…

    te pego en enlace por si le quieres echar un vistazo

    http://geeks.ms/blogs/unai/archive/2008/04/29/ef-y-el-transporte-de-grafos-primeros-pasos.aspx

  2. Totalmente de acuerdo Unai creo que el ejemplo que puse abarca mucho más de lo que intentaba decir y puede llevar a engaño, de hecho a mí me llevó.

    Seguiremos con ello… 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *