.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;} - размер сереализованных данных
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д