Atributos

22/07/2004 - 12:52 por Guy Pearce | Informe spam
Hola, tengo una duda, a ver si alguien experto me la
resuelve.

Tengo una clase así:

[Serializable()]
public class FiltroItem: IFiltro
{

}

Quisiera saber la diferencia entre esa clase y esta otra:

public class FiltroItem: IFiltro
{

}


Me refiero en que afectaría (forma de utilizarla,
rendimiento, etcétera) [Serializable()] a una clase ?.

Si una clase es [Serializable()] qué ventajas tiene y qué
desventanjas tiene frente a otra que no lo es ?

Preguntas similare

Leer las respuestas

#1 A.Poblacion
22/07/2004 - 19:04 | Informe spam
Para utilizar la clase con normalidad no te afecta en nada. Lo de
[Serializable] solo afecta si tienes que serializar algún objeto de esa
clase, en cuyo caso si es [Serializable] se puede serializar, y si no lo es
te da un error.

¿Y en qué casos se serializa? Pues un ejemplo es el caso en que pasas un
objeto de esa clase como argumento a un método que se ejecuta en otra
máquina (por medio de Remoting). En ese caso el objecto se serializa
automáticamente, se transmite a la otra máquina y en la otra se
"reconstruye" (se deserializa). Si lo intentas hacer con un objeto de una
clase que no sea serializable te da un error (a no ser que uses otras
técnicas tales como heredar de MarshallByRefObject para pasarlo por
referencia en lugar de pasarlo por valor).


"Guy Pearce" wrote in message
news:1e6001c46fda$026b5a00$

Hola, tengo una duda, a ver si alguien experto me la
resuelve.

Tengo una clase así:

[Serializable()]
public class FiltroItem: IFiltro
{

}

Quisiera saber la diferencia entre esa clase y esta otra:

public class FiltroItem: IFiltro
{

}


Me refiero en que afectaría (forma de utilizarla,
rendimiento, etcétera) [Serializable()] a una clase ?.

Si una clase es [Serializable()] qué ventajas tiene y qué
desventanjas tiene frente a otra que no lo es ?
Respuesta Responder a este mensaje
#2 Alejandro Perez
22/07/2004 - 19:05 | Informe spam
Como estas Guy!

Ok fijate, para hablar del atributo [Serializable()],
primero hay que entender el concepto de Serializacion.

La Serializacion puede ser definida como el proceso de
almacenar el estado de un objeto a un medio de
almacenamiento. Durante este proceso los miembros del
objeto son convertidos a un stream de bytes. Al igual,
existe otro proceso llamado Deserializacion, que no es
mas que revertir el proceso y crear un objeto exacto al
original basandose en ese stream de bytes.

La razon mas importante para hacer de un objecto
serializable es la persistencia del objecto a un medio de
almacenamiento para que luego una copia exacta pueda ser
creada. Aqui es donde tienes que estar claro sobre si una
clase derivada de tu clase necesita ser serializable,
porque si es asi, tu clase debe ser serializable tambien.
Si tu clase necesita ser pasada de un application domain
a otro, o si la clase sera utilizada alguna vez con
remoting debe ser serializable. Entonces aqui es cuando
nos preguntamos, y porque no marcar todas las clases como
serializables? El problema es que marcar una clase como
serializable puede traer algunas implicaciones de
seguridad, especificamente con la clase
CodeAccessPermission. De todos modos, lo que recomienda
Microsoft es marcar todas tus clases como serializables
siempre y cuando no se cumplan alguna de estas
condiciones:

- La clase nunca sera pasada de un application domain a
otro.

- La clase almacena punteros especiales (Manejo de
archivos por ejemplo) que son aplicables unicamente a la
instancia actual clase.

Entonces asi llegamos al atributo [Serializable()]. Por
defecto las clases no son serializables, para marcarlas
como serializables debes utilizar el atributo
System.SerializableAttribute. De esta manera todos los
miembros de la clase podran ser serializables al menos
que explicitamente contengan el atributo [NonSerialized
()], que indica que ese miembro particular no puede ser
serializable.


Bueno... espero te ayude la explicacion
Cuidate Guy!
Alejandro Perez
MCSD/MCDBA/MCT
Caracas - Venezuela






Hola, tengo una duda, a ver si alguien experto me la
resuelve.

Tengo una clase así:

[Serializable()]
public class FiltroItem: IFiltro
{

}

Quisiera saber la diferencia entre esa clase y esta otra:

public class FiltroItem: IFiltro
{

}


Me refiero en que afectaría (forma de utilizarla,
rendimiento, etcétera) [Serializable()] a una clase ?.

Si una clase es [Serializable()] qué ventajas tiene y


qué
desventanjas tiene frente a otra que no lo es ?





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida