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