.NET 4.x Сериализация разнородных объектов - C#
Формулировка задачи:
Доброго времени суток.
помогите разобраться, есть классы ни как не связанные между собой, необходимо их сериализовать в один файл например 1.dat и десериализовать по мере необходимости. Сериализация проходит успешно, десериализация тоже если только я десериализую в том же порядке в каком и сериализовал.
пример:
все отлично как только я убираю в рантайме получаю соответственно ошибку приведения типов.
Вопрос как правильно организовать сохранение этих объектов в одном файле. Или же каким другим способом можно хранить разные данные в одном бинарном файле, например, картинки, мелодии, данные - и соответственно считывать их.
[Serializable]
public class C1
{
public string N { get; set; } = "C1";
}
[Serializable]
public class C2
{
public Image Im { get; set; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
M1();
}
private void M1()
{
C1 p1 = new C1();
C2 p3 = new C2();
p3.Im = Image.FromFile(@"C:\1.jpg");
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("1.dat", FileMode.OpenOrCreate))
{
formatter.Serialize(fs, p1);
formatter.Serialize(fs, p3);
}
}
private void button1_Click(object sender, EventArgs e)
{
C2 im = new C2();
BinaryFormatter formatter1 = new BinaryFormatter();
using (FileStream fs = new FileStream("1.dat", FileMode.OpenOrCreate))
{
label1.Text = ((C1) formatter1.Deserialize(fs)).N;
im = (C2) formatter1.Deserialize(fs);
pictureBox1.Image = im.Im;
}
}
}label1.Text = ((C1) formatter1.Deserialize(fs)).N;
Решение задачи: «.NET 4.x Сериализация разнородных объектов»
textual
Листинг программы
public class DataInfo
{
Type TypeData {get;set;} - тип хранимых данных (клас в который нужно делать сереализацию)
uint Offset {get;set;} - смещение в сегменте данных
uint Size{get;set;} - размер сереализованных данных
}