Problemas Serialización Objetos

14/02/2005 - 12:37 por Miriam | Informe spam
Hola, tengo algún problemilla con la serialización.

Bien,

tengo una clase así:

[Serializable()]
public class DatosFiltro : Datos
{
public DatosFiltro():base()
{

}

}

A su vez la clase Datos hereda de Hashtable. La clase
Datos no tiene atributo de Serializable().

Tengo otra clase así:

public class Serializador {
public static void Serializar(DatosFiltro datosFiltro)
{
FileInfo f = new FileInfo("temp.dat");
Stream stream=f.Open(FileMode.Create);
BinaryFormatter bFormatter=new BinaryFormatter();
bFormatter.Serialize(stream,datosFiltro);
stream.Close();
}

public static DatosFiltro Deserializar()
{
FileInfo f = new FileInfo("temp.dat");
Stream stream=f.Open(FileMode.Open);
BinaryFormatter bFormatter=new BinaryFormatter();
DatosFiltro df=(DatosFiltro)bFormatter.Deserialize
(stream);
Console.WriteLine(df.ToString() );
stream.Close();
return df;
}
}

Y una página ASPX que hace:

// Datos Filtro
Response.Write("<br>Datos Filtro: " + datosFiltro.ToString
());

Filtros.Serializador.Serializar(datosFiltro);
datosFiltro = Filtros.Serializador.Deserializar();
Response.Write("<br>Datos Filtro: " + datosFiltro.ToString
());


El caso que se produce este error en Deserializar:

"No se puede encontrar el constructor para deserializar
un objeto de tipo"


Quisiera saber si en mi jerarquía de objetos Hashtable ->
Datos -> DatosFiltro, todas las clases deben ser
serializables, es decir, si Datos debe tener atirbuto
Serializable.

Otra cosa, en cuanto a rendimiento el añadir atributo
Serializable a las clases, si afecta algo al rendimiento
en cuanto a la creación de objetos (instancias).


Ademas, según he visto en algún ejemplo, se serializa en
disco; se supone la aplicación debe tener permisos de
escritura para poder serializar objetos. A mi me gustaría
poder serializar en una ruta temporal, pues con esos
ficheros -creados de la serialización- lo que quiero
hacer es insertarlos en base de datos.

Gracias.
 

Leer las respuestas

#1 A.Poblacion
14/02/2005 - 15:53 | Informe spam
"Miriam" wrote in message
news:117e01c51289$9e95bcc0$
Otra cosa, en cuanto a rendimiento el añadir atributo
Serializable a las clases, si afecta algo al rendimiento
en cuanto a la creación de objetos (instancias).



No, el hecho de que la clase esté marcada como Serializable no afecta para
nada al rendimiento cuando la utilizas normalmente, sin serializarla.

Ademas, según he visto en algún ejemplo, se serializa en
disco; [...] A mi me gustaría
poder serializar en una ruta temporal, pues con esos
ficheros -creados de la serialización- lo que quiero
hacer es insertarlos en base de datos.



No se serializa a disco, se serializa a un Stream. El Stream, en los
ejemplos, suele ir conectado con un archivo en disco, pero nada te impide
crear un MemoryStream y serializar sobre él. El MemoryStream va a parar a un
array de bytes en memoria, el cual puedes volcar a un blob en base de datos
sin ningún problema.

Preguntas similares